2010-11-08 29 views
0

中使用.mvc.aspx時未找到MVC應用程序的默認頁面我試圖使用ASP.NET MVC與舊版本的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(Visual Studio的開發Web服務器)並導航到http://localhost:2019時,我得到一個「/'應用程序中的服務器錯誤。」信息。

我需要在IIS和/或我的MVC應用程序中更改默認頁面才能正常工作?

注意:我試着增加RouteTable.Routes.RouteExistingFiles = Truethis answer,但這似乎並沒有解決問題。

回答

1

我難以得到通配符映射在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#:

public void Page_Load(object sender, System.EventArgs e) 
{ 
    HttpContext.Current.RewritePath(Request.ApplicationPath, false); 
    IHttpHandler httpHandler = new MvcHttpHandler(); 
    httpHandler.ProcessRequest(HttpContext.Current); 
} 

舊版本的IIS希望看到一個Default.aspx頁面,因此此頁面會重寫正確工作的路徑。如果您使通配符映射在IIS中工作,則不需要此頁面。