1

我有一个在 IIS7 下运行良好的 ASP.NET 4.0 Web 应用程序(webforms,而不是 mvc;没有使用 asp.net 路由)。当我尝试在 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,然后会因为没有任何默认文档概念而​​感到困惑。但是我没有定义任何通配符映射,那怎么可能呢?

4

1 回答 1

1

谷歌搜索后,我发现这是一个解决方案。它无关,但有人评论它的工作。你能试试这个吗?

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

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

于 2012-01-23T11:08:38.737 回答