Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在路由中使用.MVC.aspx时未找到MVC应用程序的默认页_C#_.net_Asp.net_Asp.net Mvc_Vb.net - Fatal编程技术网

C# 在路由中使用.MVC.aspx时未找到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

我正在尝试将ASP.NET MVC与旧版本的IIS一起使用,这些IIS在MVC的默认路由方面有问题。我找到一个建议,将
.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); 
}