2017-01-16 5 views
1

この質問は、WCF Connected Servicesの.NETコア実装に関するものです。コンテンツタイプtext/xml;応答メッセージのcharset = "utf-8"がバインディングのコンテンツタイプと一致しません(text/xml; charset = utf-8)

私は、.NETのコアに通常の.NET WCFクライアントを超える移植していますが、私はこの問題に遭遇した:

The content type text/xml; charset="utf-8" of the response message does 
not match the content type of the binding (text/xml; charset=utf-8). 

If using a custom encoder, be sure that the IsContentTypeSupported method is 
implemented properly. The first 1024 bytes of the response were: 
'<?xml version='1.0' encoding='UTF-8'?> [...] 

応答は確かに引用符が含まれています

HTTP/1.1 200 Ok 
content-type: text/xml; charset="utf-8" 

私がやったことはありません適切なWCFでこれを処理するための特別なもの。これは.NET Coreバージョンのバグですか、それともコンテンツタイプ(utf-8と "utf-8")について本当に具体的なのでしょうか?

私が呼び出しているサービスに合わせて予想されるコンテンツタイプを変更するにはどうすればよいですか? (私はそれを制御できませんが、必要に応じてWSDLをコピーして変更できます)。

私はsvcutil生成クライアントを使用しています。 (Connected Service)

答えて

1

実際、.NETコアバージョンはこれについてもっと気になるようです。いずれにしても、カスタムエンコーダを使用して解決することができました。

私は喜んでCustomTextMessageEncoderをGithubから盗んだ。私は、次のメソッドを追加しました:

public override bool IsContentTypeSupported(string contentType) 
{ 
    return true; 
} 

を同じ場所からCustomTextMessageBindingElementCustomTextMessageEncoderFactoryを盗みました。

私は(basicBindingは私が前に持っていた結合された)結合カス​​タム作成することによって、それらを追加しました:

var customBindingElement = new CustomTextMessageBindingElement("UTF-8", "text/xml", MessageVersion.Soap11); 
var binding = new CustomBinding(basicBinding); 
binding.Elements.RemoveAt(0); 
binding.Elements.Insert(0, customBindingElement); 
var client = (T2)Activator.CreateInstance(typeof(T), binding, address); 

私は動的に私のプロキシを生成するように私はアクティベーターを使用します。 WCF生成クライアントへの呼び出しと置き換えてください。

2つの見当違いの引用符のための仕事の非常に多く:D

+0

はあなたが私が私のネットコアプロジェクトにこれを追加する場所の例を指すことはできますか?私は同じ問題を抱えている。 – crackedcornjimmy

+0

「盗まれた」クラスの使い方を示すために私の答えを更新しようとしました。 –

+0

OMG !!!!!!!!!!!!!それは実際に動作します!私は...うーん...すべてのステップのステップを欠場していた。あなたは天才です。どうもありがとうございます! – crackedcornjimmy

関連する問題