ASP.NET 4.0应用程序在IIS6下找不到Default.aspx

发布于 2024-12-28 13:49:31 字数 1226 浏览 2 评论 0原文

我有一个 ASP.NET 4.0 Web 应用程序(Webforms,不是 mvc;未使用 asp.net 路由),可以在 IIS7 下正常运行。当我尝试在 IIS6 下运行它并导航到 http://localhost/MyApp/ 时,出现以下异常:

File does not exist.
System.Web.HttpException
 at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) (+0 IL, +2509040 JIT)
 at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath) (+54 IL, +198 JIT)
 at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) (+263 IL, +347 JIT)
 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() (+214 IL, +8967220 JIT)
 at System.Web.HttpApplication.ExecuteStep(HttpApplication.IExecutionStep step, Boolean& completedSynchronously) (+54 IL, +184 JIT)

请注意,此输出来自我自己的自定义错误页面。因此,.NET 本身运行良好。我什至可以远程调试它之类的东西。

现在,如果我输入 http://localhost/MyApp/Default.aspx,一切正常,我会得到默认页面,等等。第一个想法是 IIS 中没有指定默认文档,但实际上它是指定的。更糟糕的是 - 如果我完全禁用它,我仍然会收到相同的错误消息(是的,我重新启动了 IIS 并清除了浏览器缓存)!

似乎对 / 的请求总是直接发送到 ASP.NET,然后它会变得混乱,因为它没有任何默认文档概念。但我没有定义任何通配符映射,那怎么可能呢?

I've got an ASP.NET 4.0 web application (webforms, not mvc; asp.net routing isn't used) that runs fine under IIS7. When I try to run it under IIS6 and navigate to http://localhost/MyApp/, I get the following exception:

File does not exist.
System.Web.HttpException
 at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) (+0 IL, +2509040 JIT)
 at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath) (+54 IL, +198 JIT)
 at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) (+263 IL, +347 JIT)
 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() (+214 IL, +8967220 JIT)
 at System.Web.HttpApplication.ExecuteStep(HttpApplication.IExecutionStep step, Boolean& completedSynchronously) (+54 IL, +184 JIT)

Note that this output comes from my own custom error page. Thus, .NET itself is working fine. I can even remotely debug it and stuff.

Now, if I enter http://localhost/MyApp/Default.aspx, all works fine, I get the default page, etcetera. The first thought would be that the default document isn't specified in IIS, but it is. Even worse - if I disable it altogether, I still get the same error message (and yes, I restarted IIS and cleared my browser cache)!

It seems as if the request for / is always sent directly to ASP.NET which then gets confused because it doesn't have any default document concept. But I don't have any wildcard mappings defined, so how can that be?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌伤ぢ 2025-01-04 13:49:31

谷歌搜索后我找到了这个作为解决方案。它无关,但有些人评论了它的工作原理。
你能试试这个吗?

在 Windows 注册表中,打开以下节点: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

1. 创建一个名为 EnableExtensionlessUrls 的新 DWORD 值。
2. 将 EnableExtensionlessUrls 设置为 0。这将禁用无扩展 URL 行为。
3.保存注册表值并关闭注册表编辑器。
4.运行iisreset命令行工具,这会导致IIS读取新的注册表值

After Googling I found this one as a solution. Its unrelated but some commented its working.
Can you please try this.

In the Windows registry, open the following node: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

1.Create a new DWORD value named EnableExtensionlessUrls.
2.Set EnableExtensionlessUrls to 0. This disables extensionless URL behavior.
3.Save the registry value and close the registry editor.
4.Run the iisreset command-line tool, which causes IIS to read the new registry value

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文