我已将MVC集成到旧的Web表单应用程序中。 ASP.NET版本是4.0。
以下配置将导致在导航到域时默认情况下不加载Default.aspx页面。 (即http://www.myfakeeeeeeeeeeeedomain.com/)
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
但是,如果我将值切换为false,我的default.aspx页面将在导航到域时默认加载,但是......我的MVC路由请求将无效。如何在正确显示default.aspx页面的同时保持MVC路由?
注意:在IIS 7中正确设置了“默认页面”选项。
如果需要,我可以提供更多信息。
答案 0 :(得分:0)
通过查看这篇文章回答了我的问题:After add MapPageRoute to an asp.net mvc project, the site stops to enter in Home Controller
我实施的实际代码如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("DefaultPage", "", "~/Default.aspx", false, null, new RouteValueDictionary { { "outgoing", new CustomWebFormRouteConstraint() } });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
public class CustomWebFormRouteConstraint : IRouteConstraint
{
// Only match on incoming requests
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return routeDirection == RouteDirection.IncomingRequest;
}
}