C# 在路由中使用.MVC.aspx时未找到MVC应用程序的默认页
我正在尝试将ASP.NET MVC与旧版本的IIS一起使用,这些IIS在MVC的默认路由方面有问题。我找到一个建议,将C# 在路由中使用.MVC.aspx时未找到MVC应用程序的默认页,c#,.net,asp.net,asp.net-mvc,vb.net,C#,.net,Asp.net,Asp.net Mvc,Vb.net,我正在尝试将ASP.NET MVC与旧版本的IIS一起使用,这些IIS在MVC的默认路由方面有问题。我找到一个建议,将.mvc.aspx添加到我的路线中。因此,与此相反: routes.MapRoute( _ "Default", _ "{controller}/{action}/{id}", _ New With {.controller = "Home", .action = "Index", .i
.mvc.aspx
添加到我的路线中。因此,与此相反:
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index",
.id = UrlParameter.Optional} _
)
我现在用这个:
routes.MapRoute( _
"Default", _
"{controller}.mvc.aspx/{action}/{id}", _
New With {.controller = "Home", .action = "Index",
)
这有助于让MVC在旧版本的IIS上工作。但是,当我导航到http://win2k3machine/MyMVCApplication/
,我收到“目录列表被拒绝”消息。类似地,当我使用Casini(VisualStudio的开发web服务器)并导航到http://localhost:2019
,我收到一条“应用程序“/”中的服务器错误”消息
要使默认页面正常工作,我需要在IIS和/或MVC应用程序中更改什么
注意:我尝试按添加
RouteTable.Routes.RouteExistingFiles=True
per,但似乎无法解决问题。您需要在IIS中添加通配符映射。有关更多详细信息,请参阅本文:
我很难让通配符映射在IIS 6中工作。但是,添加带有以下代码的Default.aspx页面修复了此问题: VB.NET:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
HttpContext.Current.RewritePath(Request.ApplicationPath, False)
Dim httpHandler As IHttpHandler = New MvcHttpHandler()
httpHandler.ProcessRequest(HttpContext.Current)
End Sub
C#:
旧版本的IIS希望看到Default.aspx页面,因此此页面将重写路径以正常工作。如果在IIS中使用通配符映射,则不需要此页面。这非常有用。不幸的是,我无法使用通配符映射,但本文中的其他内容都非常有用。谢谢
public void Page_Load(object sender, System.EventArgs e)
{
HttpContext.Current.RewritePath(Request.ApplicationPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
}