Web API 2在RoutePrefix中使用.svc以实现向后兼容

时间:2015-05-27 21:36:16

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

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

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

RoutePrefix

在我尝试发布我的服务并通过IIS访问它之前,一切都进展顺利

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

localhost

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

SSRSV3

我收到404未找到:

404

我做了一些游戏,并决定删除" .svc"来自我的Controller的RoutePrefixAttribute。瞧,我现在可以通过IIS点击我的终端了:

good

所以我的问题是:Web API 2不支持" .svc"甚至可能是他们路线上的时期?有没有人遇到类似的东西,找到了合理的解决方法?

由于

1 个答案:

答案 0 :(得分: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