【问题标题】:Web API 2 Using .svc in RoutePrefix for backwards compatibilityWeb API 2 在 RoutePrefix 中使用 .svc 以实现向后兼容性
【发布时间】:2015-05-27 21:36:15
【问题描述】:

我正在将旧的 .NET WCF 服务转换为 Web API 2

为了保持向后兼容性,我已将 RoutePrefixAttribute 应用于我的控制器,如下所示:

一切都很顺利,直到我尝试发布我的服务并通过 IIS 访问它

当我通过 localhost(从 Visual Studio 调试)运行我的服务并通过 Postman 发出请求时,一切都很好,我得到了预期的响应:

但是,在我将站点发布到 IIS 后,设置主机条目并尝试访问相同的端点:

我收到 404 未找到:

我做了一些尝试,并决定从我的控制器的 RoutePrefixAttribute 中删除“.svc”。瞧,我现在可以通过 IIS 访问我的端点:

所以我的问题是:Web API 2 是否不支持“.svc”,甚至可能不支持其路由中的句点?有没有人遇到过类似的情况并找到了合理的解决方法?

谢谢

【问题讨论】:

  • 在 url 和 IIS 中有一个点 . 的已知问题...您可以在 stackoverflow 中找到有关该问题的问题...
  • 你说得对,我没有意识到这一点。谢谢基兰。

标签: asp.net wcf iis asp.net-web-api2


【解决方案1】:

我的问题正如 Kiran Challa 指出的那样。我必须将以下行添加到我的 system.webServer 处理程序:

<system.webServer>
    <handlers>
        <add name="ApiURIs-ISAPI-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

更多信息在这里:Dots in URL causes 404 with ASP.NET mvc and IIS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多