首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IRouteHandler在WebForms应用程序中设置多租户?

如何使用IRouteHandler在WebForms应用程序中设置多租户?
EN

Stack Overflow用户
提问于 2011-12-09 06:10:48
回答 1查看 854关注 0票数 1

我有一个基于ASP.NET 4 WebForms的应用程序,我想使用路由来允许多租户,这样http://www.example.com/site/foo/Default.aspx用于名为"foo“的客户机,http://www.example.com/site/bar/Default.aspx用于名为bar的客户机。

我得到的结果是:

代码语言:javascript
复制
// Global.asax in Application_Start
routes.Add("ClientSelector", new System.Web.Routing.Route
(
   "site/{client}/{*path}",
   new Lcmp.Web.Configuration.ClientRoute()
));


public class ClientRoute : System.Web.Routing.IRouteHandler
{
    private string m_Path;
    private string m_Client;

    public ClientRoute() { }

    public bool IsReusable
    {
        get { return true; }
    }

    public IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
    {
        this.m_Path = (string)requestContext.RouteData.Values["path"];
        this.m_Client = (string)requestContext.RouteData.Values["client"];

        string virtualPath = "~/" + this.m_Path;

        bool shouldValidate = false;

        if (shouldValidate && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(
            virtualPath, requestContext.HttpContext.User,
                          requestContext.HttpContext.Request.HttpMethod))
        {
            requestContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            requestContext.HttpContext.Response.End();
            return null;
        }
        else
        {
            HttpContext.Current.RewritePath(virtualPath);
            HttpContext.Current.Items.Add("Client", this.m_Client);
            return (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
        }
    }
}

而且它似乎适用于初始的.aspx页面。但是路由正在拾取.js和其他不可编译的资源,并抛出异常。避免路由这些问题的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-09 06:24:09

你是can use the StopRoutingHandler() to ignore requests for certain files

代码语言:javascript
复制
routes.Add(new Route("*{js}", new {js=@".*\.js(/.*)?", new StopRoutingHandler()));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8438423

复制
相关文章

相似问题

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