首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net MvcHandler.ProcessRequest从未被称为

asp.net MvcHandler.ProcessRequest从未被称为
EN

Stack Overflow用户
提问于 2011-10-03 15:43:16
回答 1查看 1.5K关注 0票数 0

在Asp.Net MVC 3上,我已经覆盖了MvcRouteHandler和MvcHandler,以包括处理Url的子域部分。

然而,它似乎从未调用过MvcHandler的MvcHandler方法。

代码语言:javascript
复制
public class SubDomainMvcRouteHandler : MvcRouteHandler
{
    protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
    {
        return new SubDomainMvcHandler(requestContext);
    }
}

代码语言:javascript
复制
public class SubDomainMvcHandler : MvcHandler
{
    public SubDomainMvcHandler(RequestContext context)
        : base(context)
    {
    }

    protected override void ProcessRequest(HttpContextBase httpContext)
    {
        string[] hostNameParts = httpContext.Request.Url.Host.Split('.');

        int length = hostNameParts.Length - 3;

        for (int i = length; i >= 0; i--)
        {
            if (hostNameParts[i] != "www")
                RequestContext.RouteData.Values.Add("SubDomain" + (length - i + 1), hostNameParts[0]);
        }

        base.ProcessRequest(httpContext);
    }
}

代码语言:javascript
复制
public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        ).RouteHandler = new SubDomainMvcRouteHandler();

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-03 16:51:09

您应该重写BeginProcessRequest,它具有以下签名:

代码语言:javascript
复制
protected override IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7637295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档