1

我已将 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 中正确设置。

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

4

1 回答 1

0

通过查看这篇文章回答了我的问题:在将 MapPageRoute 添加到 asp.net mvc 项目后,站点停止进入 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;
        }
    }
于 2012-09-07T03:15:11.650 回答