【问题标题】:Route for root address in asp.net web formsasp.net web 表单中根地址的路由
【发布时间】:2023-03-28 08:58:01
【问题描述】:

我的 web 表单应用程序的 global.asax 中有以下 RegisterRoutes 方法`

routes.MapPageRoute("about", "about", "~/about.aspx");
            routes.Add(
            "root",
            new Route("", new RootRouteHandler())
            );

第一条路线可以正常工作,即当我输入http://localhost:9898/about 但当我转到像“http://localhost:9898”这样的根地址时,它不会调用RootRouteHandler。这是路由处理程序的代码

public class RootRouteHandler : IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            var address = requestContext.HttpContext.Request.Headers["host"];
            string host = string.Empty;
            var index = address.IndexOf('.');
            if(index>0)
            {
                host = address.Substring(0, index);
            }
            var virtualPath = string.Format("~/{0}/default.aspx", host);
            var page = BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;
            return page;
        }
    }

*编辑:*当我添加路线时

routes.Add("root",new Route("default",new RootRouteHandler());

然后为地址http://localhost:9898/default 调用处理程序很好,但我需要让它为根地址工作。有什么想法吗?

【问题讨论】:

    标签: asp.net routing webforms url-routing


    【解决方案1】:

    我认为您需要创建一个新的 RouteBase 以便为主机路由并覆盖 GetRouteData 方法。考虑从 RouteBase 派生并为基于主机的路由提供功能并将其添加到 RouteCollection。

    http://msdn.microsoft.com/en-us/library/system.web.routing.routebase.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多