为什么在MVC中找不到我的IIS默认文档

为什么在MVC中找不到我的IIS默认文档,iis,model-view-controller,single-page-application,progressive-web-apps,default-document,Iis,Model View Controller,Single Page Application,Progressive Web Apps,Default Document,我知道这里有一百万个类似/相同的问题(我知道这是因为我读过它们),但我就是不明白为什么我的默认文档没有显示出来。过去是,;如果启用默认网站,则会显示该网站的默认页面。HTTP错误代码是404 编辑:是因为我使用的是“本地主机”还是顶级域?这是工作,但我得到了404从 我相信/猜测以下是问题所在。它曾经工作过:- <system.webServer> <validation validateIntegratedModeConfiguration="false" /&g

我知道这里有一百万个类似/相同的问题(我知道这是因为我读过它们),但我就是不明白为什么我的默认文档没有显示出来。过去是,;如果启用默认网站,则会显示该网站的默认页面。HTTP错误代码是404

编辑:是因为我使用的是“本地主机”还是顶级域?这是工作,但我得到了404从

我相信/猜测以下是问题所在。它曾经工作过:-

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <defaultDocument enabled="true">
      <files>
        <clear />
        <add value="MyDefault.html" />
      </files>
    </defaultDocument>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-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>
没有可用的主控制器

这是返回的标准错误页:“/”中的服务器错误 应用找不到资源。描述:HTTP404。这个 您正在查找的资源(或其依赖项之一)可能具有 已被删除、名称已更改或暂时不可用。 请检查以下URL并确保其拼写正确 没错

请求的URL:/

版本信息:Microsoft.NET Framework版本:4.0.30319; ASP.NET版本:4.8.3752.0

没有在FRL中创建文件

这是404错误:- 2019-12-04 03:55:34::1 GET/-443-::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/78.0.3904.108+Safari/537.36-4040 4

这是FRT请求摘要。完整的跟踪可以在完整的FRT中找到


[4] :

我的回复太长,所以我无法在评论中发表。我查看了您的日志,注意到404来自asp.net托管管道,而静态文件处理程序甚至不参与此请求

因此,我认为您的项目或无扩展处理程序ExtensionlessUrlHandler-Integrated-4.0可能有问题。

首先,我们需要检查routes.ignoreroute在visual studio中是否正常工作。即使项目的根文件夹中没有Mydefault.html,您是否也得到了403.14

因为我注意到您正在global.asax中注册
RouteConfig.registerOutes(RouteTable.Routes)
,但您没有将其包括在
RouteConfig
类中。我用于创建单独的Route.config来存储Route表

如果在VS中工作正常,您是否尝试过清理根文件夹中的所有发布文件并通过VS部署工具重新发布?您在IIS管理器处理程序映射中看到staticfile处理程序了吗?此外,请检查您的应用程序池标识和IUSR是否具有访问您网站根文件夹的权限。由于这不是典型的404错误,我们可能需要一步一步地排除故障

编辑:

在声明某些东西不起作用之前,请运行一些基本诊断,如FRT,MVC和IIS的版本是什么?IIS 10 Windows 10.Net 4.7.2输出一个类library@lexLi我为创建目录的网站启用了失败的请求日志记录,但我没有创建任何文件。哦,MVC版本5.2.7.0请参阅我的web.config,其中我删除并安装了所有处理程序ExtensionlessUrlHandler-*IIRC这可能是由于飞行前的选项,但无论如何,必须找到我的Ajax“data/getFromDB”操作并使其正常工作。其他帖子也提到了对静态文件处理程序执行相同的操作,但这再次导致我的相对控制器URL失败。我正在使用ApplicationPoolIdentity。当我用存在的路由替换到主/索引控制器的路由时,它不会被调用。它在VS中也不起作用。我通过生成-->发布发布。@McMurphy您是否看到处理程序的顺序与我上面的帖子相同?如果路由表甚至没有在VisualStudio中引入索引403.14,那么它不应该是IIS问题。此外,您是否修改了以前发布的global.asax?如果没有将registerOutes放在RouteConfig类下。然后,您应该只在应用程序_Start()中注册RegisterRoutes(RouteTable.Routes),而不是RouteConfig.RegisterRoutes(RouteTable.Routes);
public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("");

        routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
             );

    }
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}