3

WCFからDotNetへのメソッドへのアクセス中に以下のエラーが発生します

コンテンツタイプtext/html; 応答メッセージのcharset=utf-8が、バインディングのコンテンツタイプ(text / xml; charset = utf-8)と一致しません。カスタムエンコーダーを使用する場合は、IsContentTypeSupportedメソッドが正しく実装されていることを確認してください。応答の最初の1024バイトは次のとおりです。'ランタイムエラー本文{font-family: "Verdana"; font-weight:normal; font-size:.7em; color:black;} p {font-family: "Verdana"; font-weight:normal; color:black; margin-top:-5px} b {font-family: "Verdana"; font-weight:bold; color:black; margin-top:-5px} H1 {font-family: "Verdana"; font-weight:normal; font-size:18pt; color:red} H2 {font-family: "Verdana"; font-weight:normal; font-size:14pt; color:maroon} pre {font-ファミリー: "LucidaConsole"; font-size:。9em} .marker {font-weight:bold; color:black; text-decoration:none;} .version {color:gray;} .error {margin-bottom:10px;} .expandable {text-decoration:underline; font-weight:bold; カラー:ネイビー; カーソル:手; }

<body bgcolor="white">

        <span><H1>Server Error in '/ORSXMLWCFServiceNew' Application.<hr width=100% size=1 color=silver></H1>

        <h2> <i>Runtime Error</i> </'.

親切に私を助けてください。

4

2 に答える 2

7

役に立たない1024バイトだけでなく、完全な応答を取得する方法を見つけました...

using (var client = new Service1Client())
{
    try
    {
        Console.WriteLine(client.DoWork());
    }
    catch (ProtocolException e)
    {
        var webException = e.InnerException as WebException;

        var responseString = webException.ExtractResponseString();

        if (string.IsNullOrEmpty(responseText))
            Console.WriteLine(e);
        else
            Console.WriteLine(responseString);
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}

次のヘルパーメソッドが使用されている場所

public static string ExtractResponseString(this WebException webException)
{
    if (webException == null || webException.Response == null)
        return null;

    var responseStream = webException.Response.GetResponseStream() as MemoryStream;

    if (responseStream == null)
        return null;

    var responseBytes = responseStream.ToArray();

    var responseString = Encoding.UTF8.GetString(responseBytes);
    return responseString;
}

詳細については、私のブログを参照してくださいhttp://mnaoumov.wordpress.com/2012/09/28/wcf-protocolexception/

于 2012-09-28T09:29:23.083 に答える
0

これは、WCFサービスのエラーが原因で発生します。(コードに明らかなものがないかチェックした後)修正するための最善の方法は、WCFサービスでエラーログを機能させ、ログ内の例外を確認することです。

これらは役立つかもしれません:

WCFへのロギングの追加

ロギングクラスの作成

于 2012-05-11T10:12:19.357 に答える