【问题标题】:Self-hosted WCF app using http.sys returns HTTP 503 for path not found使用 http.sys 的自托管 WCF 应用程序为找不到路径返回 HTTP 503
【发布时间】:2016-12-11 05:46:36
【问题描述】:

这个问题最初是针对 Azure Service Fabric,因为那是我的部署模型。但我很清楚这是一个 WCF 问题,所以我正在重新措辞以更好地适应它。问题的原文以黄色突出显示。

我创建了一个自托管的 WCF 应用程序,它通过端口 80 和 443 公开了一个简单的 Restful WebApi。我的所有端点都按预期工作,就像我在 IIS 中托管相同的代码时一样。问题是,当我通过尝试访问不存在的路径来执行否定测试时,我得到 HTTP 503 错误,而不是我期望的 HTTP 404。

有人向我指出这可能与 http.sys 有关,因为这是处理传入请求的内容。那么我该如何解决这个问题呢?这肯定是自托管 WCF 应用程序的常见问题。有没有办法让 http.sys 或我的应用程序和用户之间的任何组件返回更有意义的错误,例如 404?

关于为什么会这样以及如何解决它有什么想法吗?

我设置了一个无状态服务 WebApi,它从我的 通过端口 80 进行 SF 集群。api 运行良好,但我注意到 如果我在任何无效路径上执行 HTTP 请求,例如“GET http://mycluster.westus.cloudapp.azure.com/thisisinvalid" 我是 返回 HTTP 503 状态。我希望是 404,因为 503 是 误导,会让我的客户感到困惑。我的无状态服务 顺便说一下,是一个基于 WCF 的 WebApi。

【问题讨论】:

    标签: wcf azure-service-fabric http.sys


    【解决方案1】:

    我相信您看到了 WCF 依赖于 http.sys 进行 HTTP 绑定的工件,它允许多个应用程序共享一个端口并使用唯一的 URL 路径进行标识。当您请求一个不存在的“应用程序”时,它会返回 503。

    不过,这与 Service Fabric 并没有太大关系。如果您在问题中添加“wcf”标签,您可能会得到更全面的答案。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多