【问题标题】:asp.net vs WCF request pipeline in IIS 500 errorIIS 500 错误中的 asp.net vs WCF 请求管道
【发布时间】:2011-04-06 21:47:18
【问题描述】:

使用 .net 4.0、IIS 7.4 Windows Server 2008 R2

我有一个 asp.net 应用程序,它位于 WCF Web 服务之间并根据一些规则路由请求。

iis 错误页面设置设置为“本地请求和自定义的详细错误...”

asp.net 路由服务使用 HttWebRequest 对象调用 WCF 服务。

当 wcf 服务抛出错误异常时,我收到 iis html 错误响应。

但是当我直接调用服务(没有路由器)时,我得到一个正确的 IIS 500 错误和正确的肥皂响应

我知道我可以通过更改 IIS 错误页面设置来修复它,但我不想这样做,因为它会暴露我的非 wcf 错误。

问题是

  1. 当涉及到 500 个错误时,iis 处理 wcf 请求与 asp.net 请求的方式是否存在差异

  2. 这也曾在 IIS 6 中工作,如何在 iis 7 中恢复此行为

【问题讨论】:

    标签: asp.net wcf iis-7


    【解决方案1】:

    您应该将 ASP.NET 排除在外。创建一个 WCF 服务以介于这两个服务之间。您可以从现有的 ASP.NET 路由器复制路由逻辑。 WCF 服务应该只使用“添加服务引用”来与这两个服务通信。

    或者,只需在 ASP.NET 路由器中自己使用“添加服务引用”即可。

    【讨论】:

    • 不幸的是,我们的服务依赖于某些 http 标头,并且更改是一项艰巨的任务,asp.net pipleline 与 wcf 完全不同吗? howcome iis 对待 wcf 500 和 asp.net 500 的方式不同
    • 我不知道 IIS 如何以不同的方式对待它们,或者即使涉及 IIS。可能是因为响应的主体包含 SOAP 而不是 HTML? WCF 是非常可扩展的。我确定您可以使用 WCF 处理标头。我不知道确切的技术,但我相信你可以做到。我知道 WCF 消息日志在启用时包含 HTTP 标头信息,因此证明 WCF 不只是丢弃标头。它们可能存储在传入 Message 对象的 Properties 属性中。
    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 2014-03-18
    • 1970-01-01
    • 2014-09-11
    • 2018-12-16
    • 2011-06-16
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多