1

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

我没有更改默认文档设置或物理路径文件权限。我怎样才能解决这个问题?

4

1 回答 1

1

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

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

        ...
    }
}
于 2018-03-19T17:25:11.033 回答