[英]ASP.NET Navigation in IIS Leads to Directory Instead of .aspx File
我正在嘗試將Windows 7的Visual Studio 2013中創建的ASP.NET項目移動到Windows Server 2008的IIS 6.0,並且頁面之間的導航出現問題。
在Visual Studio中,我使用以下命令從“登錄”頁面導航到應用程序啟動的主頁:
Response.Redirect("~/Home.aspx");
在Visual Studio中可以正確加載Home.aspx文件。 但是,當我在IIS中運行此命令時,該命令改為嘗試查找Home文件夾,而不是Home.aspx文件,因此,除非我創建一個Home目錄,否則即使它不會加載Home.aspx文件,它也會返回404錯誤。我將其復制到目錄中。
造成這種差異的可能原因是什么,如何使應用程序在IIS中運行Home.aspx頁?
看起來是路由問題。 您的VS 2013 Web項目是否已創建為ASP.NET MVC網站? 如果是,則可能已向其中添加了一些WebForms aspx頁面,但是為了同時具有MVC和WebForms頁面,必須在App_Start / RouterConfig.cs中調整路由配置:
如果您在RouterConfig.cs的RegisterRoutes()方法中注釋掉此代碼,則可以訪問Home.aspx:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果在保留所有其他頁面的MVC路由的同時僅允許Home.aspx,則必須在route.MapRoute方法調用中更改默認值。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "<Some Other Controller Name>", action = "Index", id = UrlParameter.Optional }
);
如果將默認路由的控制器名稱從“ Home”更改為其他名稱,則Home.aspx應該正確加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.