我创建了一个发送管道,它只包含一个自定义管道组件,该组件创建一个mime消息,将其发送到Rest,该API需要多部分/表单数据。它可以工作,但每第二次调用就失败一次。它在成功和失败之间交替进行。当它失败时,我写入到报头的边界似乎被WebHttp适配器使用先前成功消息的边界覆盖。
我已经确定我正在将正确的边界写入标头。在管道组件中使用过的任何流都已添加到管道资源管理器中。如果在第一条成功消息之后重新启动主机实例,则下一条消息将是successful.
成功
POST http://somehost/Record HTTP/1.1
Content-Type: multipart/form-data; boundary="9ccdeb0a-c407-490c-9cce-c5e3be639785"
Host: somehost
Content-Length: 11989
Expect: 100-continue
Accept-Encoding: gzip, deflate
--9ccdeb0a-c407-490c-9cce-c5e3be639785
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=uri
6442
--9ccdeb0a-c407-490c-9cce-c5e3be639785失败:标头中的边界与有效载荷中的边界不相同
POST http://somehost/Record HTTP/1.1
Content-Type: multipart/form-data; boundary="9ccdeb0a-c407-490c-9cce-c5e3be639785"
Host: somehost
Content-Length: 11989
Expect: 100-continue
Accept-Encoding: gzip, deflate
--3fe3e969-8a41-451c-aae7-8458aee0c9f4
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=uri
6442
--3fe3e969-8a41-451c-aae7-8458aee0c9f4
Content-Disposition: form-data; name=Files; filename=testdoc.docx; filename*=utf-8''testdoc.docx如果我能让标题使用正确的边界,我的问题就会解决。有什么建议吗?
发布于 2019-09-17 19:48:38
我更惊讶的是你在这个方法上取得了一些成功。问题是,头不是正式的消息属性,而是端口属性。端口缓存它们的设置。您必须使它成为一个动态的发送端口,它才能正常工作。另一种方法是在自定义行为中设置标头,但我认为这不适合您的场景。
https://stackoverflow.com/questions/57970188
复制相似问题