为什么未找到我的IIS默认文档MVC

问题描述 投票:0回答:1

我知道这里有上百万个类似/相同的问题(因为我已经读过这些问题),但是我无法弄清楚为什么我的默认文档没有显示。过去如果启用默认网站,则会显示该网站的默认页面。 HTTP错误代码是404。

编辑:是因为我使用的是“ localhost”还是顶级域?那是https://localhost/MyDefault.html的工作原理,但我从https://localhost中得到了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>

我当时想了两天,然后遇到了我以为是solution的内容,但可惜(听起来很合适):-(

仅供参考,这是SPA / PWA,当我说mvC时,它实际上仅是控制器。

这是Global.asax部分。

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);
    }
}

没有可用的HOME控制器。

这是返回的标准错误页面:-'/'中的服务器错误应用。无法找到该资源。说明:HTTP 404。您正在寻找的资源(或其依赖项之一)可能具有已被删除,更名或暂时不可用。请查看以下网址,并确保其拼写正确正确。

请求的URL:/

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

没有在FRL中创建文件

Failed Request Logging

IIS logging

这是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-404 0 0 4

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

中找到

enter image description here

iis model-view-controller single-page-application progressive-web-apps default-document
1个回答
0
投票

我的回复太长,因此无法发表评论。我查看了您的日志,发现404来自asp.net托管管道。静态文件处理程序甚至没有参与此请求。

所以我认为您的项目或无扩展处理程序ExtensionlessUrlHandler-Integrated-4.0可能有问题。enter image description here

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.