ASP.net MVC HttpException 异常:文件未找到
ASP.net MVC HttpException 异常:文件未找到
我在IIS6上运行asp.net MVC网站 - 我已经编辑了我的路由,如下所示:\n
routes.MapRoute( "Default", "{controller}.aspx/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); routes.MapRoute( "Root", "", new { controller = "Home", action = "Index", id = "" } );
\n因此,现在我的所有URL都包含.aspx(根据Phil Haack的一个解决方案)。现在,我使用Elmah捕获所有未处理的异常,并且几乎每个页面请求都会出现以下错误,被Elmah捕获,但我在前端从未看到过(一切工作得很完美):\n
System.Web.HttpException: 文件'/VirtualDirectoryName/Home.aspx'不存在。 System.Web.HttpException: 文件'/VirtualDirectoryName/Home.aspx'不存在。 at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
\n有一个Home控制器,它应该被找到,但我不确定a)这是从哪里调用的,b)为什么我在前端看不到这个错误。有什么想法吗?
ASP.net MVC HttpException strange file not found问题的出现原因是路由中包含了.aspx扩展名,而实际上.aspx文件是作为视图存在的。解决方法是在路由配置中移除.aspx扩展名,并在IIS6上进行本地运行时需要将.aspx扩展名保留。
以下是解决该问题的路由配置代码:
routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); routes.MapRoute( "Root", "", new { controller = "Home", action = "Index", id = "" } );
通过移除.aspx扩展名,路由将正确映射到控制器,解决了HttpException strange file not found问题。同时在IIS6上运行时,保留.aspx扩展名可以实现本地运行的功能。
ASP.net MVC HttpException strange file not found问题出现的原因是在IIS中没有配置对应的ISAPI应用程序。解决方法是在IIS中添加一个ISAPI应用程序,并将其指向aspnet_isapi.dll。具体步骤如下:在IIS管理器控制台(inetmgr.exe)中右键点击网站,选择属性,然后选择"Home Directory",再点击配置。在配置对话框中,可以看到一个ISAPI应用程序的列表。如果没有一个.*的扩展名的应用程序,则需要添加一个,并将其指向aspnet_isapi.dll。这样,IIS就会知道任何没有扩展名的URL(例如ASP.net MVC的URL:http://localhost/myappp/myPage/)仍然会运行ASP.net的扩展。同时,在创建筛选器时需要取消“检查文件是否存在”的复选框。希望能对你有所帮助。
ASP.NET MVC中的HttpException异常的原因是由于找不到奇怪的文件。这个问题的解决方法是进入IIS6应用程序属性,然后在配置中检查".aspx"扩展名的"验证文件存在"选项是否未选中。如果选中了该选项,它将无法正常工作。
下面是解决方法的具体步骤:
1. 打开IIS6管理器,并找到您的应用程序。
2. 右键单击应用程序,然后选择"属性"。
3. 在属性窗口中,选择"配置"选项卡。
4. 在配置选项卡中,找到以".aspx"结尾的扩展名。
5. 在"验证文件存在"列中,确认该选项未选中。
6. 如果该选项被选中,单击复选框以取消选择。
7. 点击"确定"保存更改。
通过执行以上步骤,您可以解决ASP.NET MVC中的HttpException异常,该异常是由于找不到奇怪的文件导致的。请确保在IIS6应用程序属性的配置中,".aspx"扩展名的"验证文件存在"选项未选中。这将确保您的应用程序可以正常工作。