我正在使用ASP.NET 4.5
开发ASP.NET WebForms应用程序该应用程序具有多租户支持。每个租户都有自己的URL,如:
http://myApplication.net/DemoTenant1/
在Login.aspx中非常简化,应用程序调用此方法并将此URL转换为内部ID。
public static string getTenant(HttpRequest request) { return = request.Url.ToString(); }
现在的问题是,我们有超过200个租户,我们需要定义一个WebApplication
我正在寻找一个智能替代品,我可以与旧网址保持兼容。
我正在寻找如何通过URL路由解决这个问题或者将WebForms与MVC混合并添加登录控制器的想法?
也对其他想法持开放态度......
答案 0 :(得分:1)
我同意亚历山大所说的,正确的方法是使用URL路由。 但是......如果你想节省时间......
首先,删除所有Web应用程序;
所以摆脱......
http://myApplication.net/DemoTenant1/
http://myApplication.net/DemoTenant2/
http://myApplication.net/DemoTenant3/
然后你需要确保键入以下内容:
http://myApplication.net/
...带您进入您想要使用的实际WebApplication。
然后,在global.asax文件中......您需要捕获404异常。
所以当有人输入时:
http://myApplication.net/DemoTenant1/
...它会抛出一个404异常,你可以在你的global.asax文件中捕获这样的:
void Application_Error(object sender, EventArgs e)
{
string urlData = Request.ServerVariables["SCRIPT_NAME"];
// do some string splitting to get the DemoTenant1 value
// Response.Redirect("~Login.aspx?tenant=DemoTenant1");
}
它有点乱,但我过去做过这个,当时我和你的情况完全一样。虽然,您现在拥有由Microsoft构建的路由模块(我当时没有)。我非常确定您可以在Webforms中使用路由模块,而无需使用MVC。