IIS中的ASP.NET导航导致目录而不是.aspx文件

时间:2017-03-23 16:11:19

标签: c# asp.net .net iis visual-studio-2013

我试图将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文件,因此返回404错误,除非我创建一个Home目录,即使没有加载Home.aspx文件我将其复制到目录。

造成这种差异的可能原因是什么,以及如何让应用程序在IIS中运行Home.aspx页面?

1 个答案:

答案 0 :(得分:0)

它看起来像路由问题。您的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,则必须更改routes.MapRoute方法调用中的默认值。

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "<Some Other Controller Name>", action = "Index", id = UrlParameter.Optional } 
        ); 

如果从&#39; Home&#39;更改默认路由的控制器名称对于其他东西,Home.aspx应该正确加载。