【问题标题】:How can I get the message/response body in WCF when server returns an HTTP 401?当服务器返回 HTTP 401 时,如何在 WCF 中获取消息/响应正文?
【发布时间】:2010-01-13 02:26:46
【问题描述】:

我有一个 WCF 客户端测试工具,我在其中使用“客户端消息检查器”端点行为来“挑选”进出服务的原始请求和响应消息,并将它们保存以供以后在 UI 中显示。

这很好用,除了传递无效凭据的用例(基本身份验证)。服务器返回 HTTP 401 以及正文中的 SOAP 错误,其中包含所发生事件的详细信息。我无法控制服务,因此无法更改此行为。

因为 HTTP 401 作为 WebException 返回,所以我的消息检查器永远不会触发,并且我无法获得原始响应。此异常最终以MessageSecurityException 的形式到达 UI。

有没有办法抑制这种情况,所以消息检查员的AfterReceiveReply 仍然会触发?还是有其他地方我可以访问整个原始响应?

谢谢!

【问题讨论】:

    标签: c# asp.net wcf


    【解决方案1】:
    catch (WebException e)
    {
        resp = (HttpWebResponse)e.Response;
    }
    

    【讨论】:

    • 谢谢达林。对于任何可能关心的人来说,还有一些详细信息:虽然我没有看到在哪里可以直接捕获 WebException,但它在我的 UI 层中显示为 MessageSecurityException 的基本异常。然后,我可以使用从 WebException 获得的 HttpWebResponse 对象的 GetResponseStream() 方法获取响应正文
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2012-05-15
    • 2022-11-11
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多