【问题标题】:ExtensionlessUrlHandler causes 404 Not Found with default document on IISExtensionlessUrlHandler 导致 404 Not Found with default document on IIS
【发布时间】:2018-03-19 15:00:13
【问题描述】:

我最近更新了一些 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" />

web.config 的完整“handlers”部分如下:

<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>

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

【问题讨论】:

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


    【解决方案1】:

    我刚刚发现这个问题与我在index.html中的修改无关。实际原因源于 MVC 路由的工作方式:我刚刚将 MVC 组件添加到我的项目中,并且新添加的 MVC 路由配置开始消化所有无扩展路径。根据this explanation,我只是为根路径(空字符串)添加了一个异常,问题已修复:

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

    【讨论】:

      猜你喜欢
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多