我有一个在 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,然后会因为没有任何默认文档概念而感到困惑。但是我没有定义任何通配符映射,那怎么可能呢?