我知道这里有上百万个类似/相同的问题(因为我已经读过这些问题),但是我无法弄清楚为什么我的默认文档没有显示。过去如果启用默认网站,则会显示该网站的默认页面。 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中创建文件
这是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
中找到我的回复太长,因此无法发表评论。我查看了您的日志,发现404来自asp.net托管管道。静态文件处理程序甚至没有参与此请求。
所以我认为您的项目或无扩展处理程序ExtensionlessUrlHandler-Integrated-4.0可能有问题。
首先,我们需要检查routes.ignoreroute在Visual Studio中是否工作正常。即使项目的根文件夹中没有Mydefault.html,您也得到403.14吗?
因为我注意到您正在global.asax中注册RouteConfig.RegisterRoutes(RouteTable.Routes)
,但没有将其包括在RouteConfig
类中。我习惯于创建单独的Route.config来存储路由表。
如果在VS中工作正常,是否尝试清除根文件夹中的所有发行文件并通过VS部署工具重新发布?您是否在IIS管理器处理程序映射中看到staticfile处理程序?此外,请检查您的应用程序池标识和IUSR是否有权访问您网站的根文件夹。由于这不是典型的404错误,因此我们可能必须逐步进行故障排除。