Как настроить мультитенантность в приложении WebForms с помощью IRouteHandler? - PullRequest
1 голос
/ 09 декабря 2011

У меня есть приложение на основе ASP.NET 4 WebForms, и я хочу использовать маршрутизацию, чтобы разрешить многопользовательский режим, например, http://www.example.com/site/foo/Default.aspx для клиента с именем "foo" и http://www.example.com/site/bar/Default.aspxдля клиента с именем bar.

Я дошел до:

// 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 и другие не компилируемые ресурсы и генерирует исключения.Каков наилучший способ избежать их маршрутизации?

1 Ответ

2 голосов
/ 09 декабря 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...