我有一个在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,然后因为它没有任何默认文档概念而感到困惑。但是我没有定义任何通配符映射,那怎么可能呢?
答案 0 :(得分:1)
谷歌搜索后,我发现这个解决方案。它无关但有些评论其工作。 你能试试吗?
在Windows注册表中,打开以下节点:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 4.0.30319.0
1.创建名为EnableExtensionlessUrls的新DWORD值。 2.将EnableExtensionlessUrls设置为0.这将禁用无扩展URL行为。 3.保存注册表值并关闭注册表编辑器。 4.运行iisreset命令行工具,该工具使IIS读取新的注册表值