1

500 エラーを返す Web サービスを呼び出しています。

using (var client = new PSGenericWebService.W_GENERICEMPLOYEEWS_PortTypeClient("GenericPort"))
{
    client.Endpoint.Behaviors.Add(new MessageBehavior("U", "P"));
    try
    {
        var response = client.GetEmployeeDataByDateRange();
        Console.WriteLine(response.Length);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

エラーが日付範囲に関係していることを理解しており、その点でコードの一部を省略しました。しかし、フィドラーを使用すると、次の応答が得られます。

HTTP/1.1 500 内部サーバー エラー日付: 2012 年 12 月 18 日火曜日 17:15:04 GMT コンテンツ長: 732 コンテンツ タイプ: テキスト/xml。charset=UTF-8 X-Powered-By: サーブレット/2.5 JSP/2.1

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
    <SOAP-ENV:Fault>
        <faultcode>SOAP-ENV:Server</faultcode>
        <faultstring>null</faultstring>
        <detail>
            <IBResponse xmlns="" type="error">
                <DefaultTitle>Integration Broker Response</DefaultTitle>
                <StatusCode>20</StatusCode>
                <MessageID>74</MessageID>
                <DefaultMessage>
                    <![CDATA[From date (2012-11-17) and To date (2012-12-18) Range cannot be greater than 30 days. (27000,74)]]>
                </DefaultMessage>
                <MessageParameters>
                    <Parameter>
                        <![CDATA[2012-11-17]]>
                    </Parameter>
                    <Parameter>
                        <![CDATA[2012-12-18]]>
                    </Parameter>
                    <Parameter>
                        <![CDATA[30]]>
                    </Parameter>
                </MessageParameters>
            </IBResponse>
        </detail>
    </SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

返される例外は、null としてリストされているだけです。返された XML から DefaultMessage を取得したいと考えています。したがって、コードの修正を探しているのではなく、必要なメッセージに対して返された応答を解析する方法を検討しています。ありがとうございました。

4

0 に答える 0