ExtensionlessUrlHandler导致404 Not Found with IIS上的默认文档

时间:2018-03-19 15:00:14

标签: asp.net iis asp.net-web-api iis-handlers

我最近更新了一些ASP.NET Nuget包并修改了我网站的index.html文件。现在我得到404-Not Found错误,但仅限于根路径,即在没有子目录或文件名的情况下键入网站地址时。

如果我明确附加" /index.html"然后正确显示默认文档。

我还注意到我的web.config文件中的以下行有一个意外的行为:如果我删除该行,则可以显示根路径,但Web API请求返回404-Not Found响应。如果我保留它,那么Web API请求可以正常工作,但默认文档会导致404-Not Found。

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

完整的#34;处理程序&#34; web.config的部分如下:

<handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

我没有更改默认文档设置或物理路径文件权限。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我刚刚发现问题与我在index.html中的修改无关。实际原因源于MVC路由的工作方式:我刚刚将MVC组件添加到我的项目中,新添加的MVC路由配置开始消化所有无扩展路径。根据{{​​3}},我刚刚为根路径(空字符串)添加了一个例外,问题得到解决:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapMvcAttributeRoutes();
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("");

        ...
    }
}