我有一个基于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和其他不可编译的资源,并抛出异常。避免路由这些问题的最佳方法是什么?
发布于 2011-12-09 06:24:09
你是can use the StopRoutingHandler() to ignore requests for certain files。
routes.Add(new Route("*{js}", new {js=@".*\.js(/.*)?", new StopRoutingHandler()));https://stackoverflow.com/questions/8438423
复制相似问题