我正在尝试通过 WCF 向 IRS 发送 SOAP 消息,但由于我的 MTOM 附件格式不正确,它一直被拒绝。
我已将问题范围缩小到我的Content-Transfer-Encoding
价值。它设置为Binary
(的简写8-bit
)。
IRS 服务希望我使用7-bit
8 位编码附件(换句话说,使用 UTF-8 编码,然后保证我没有使用任何非 ASCII 字符)。
我已经在使用自定义消息编码器来压缩我的请求(回复以纯文本形式返回,呃)。这就是我WriteMessage
现在的样子。
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) {
// get an instance of the underlying encoder
var encoder = new MtomMessageEncodingBindingElement() {
MessageVersion = MessageVersion.Soap11WSAddressing10,
WriteEncoding = System.Text.Encoding.UTF8
}.CreateMessageEncoderFactory().Encoder;
// write the message contents
var uncompressed = encoder.WriteMessage(message, maxMessageSize, bufferManager, messageOffset);
// compresses the resulting byte array
return CompressBuffer(uncompressed, bufferManager, messageOffset);
}
有任何想法吗?当我将WriteEncoding
属性更改为 ASCII 或 UTF7 时,.NET 会引发 ArgumentException 并告诉我不支持该格式。