Asp.net默认页面没有返回runAllManagedModulesForAllRequests = true

时间:2012-09-06 21:26:46

标签: asp.net iis-7 web-config

我已将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中正确设置了“默认页面”选项。

如果需要,我可以提供更多信息。

1 个答案:

答案 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;
        }
    }