WCF を介して IRS に SOAP メッセージを送信しようとしていますが、MTOM 添付ファイルの形式が正しくないため、拒否され続けます。
Content-Transfer-Encoding
問題を自分の価値に絞り込みました。Binary
(の省略形)に設定され8-bit
ます。
IRS サービスは7-bit
、8 ビットでエンコードされた添付ファイルと共に を使用するよう求めています (つまり、UTF-8 でエンコードし、非 ASCII 文字を使用していないことを保証します)。
リクエストを gzip するために、カスタム メッセージ エンコーダーを既に使用しています (レスポンスはプレーン テキストで返されます)。これが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 をスローし、フォーマットがサポートされていないことを通知します。