繁体   English   中英

替代ASP.NET虚拟目录以实现多租户

[英]Replacement for ASP.NET Virtual Directory for Multi-tenancy

我正在使用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混合并添加登录控制器?

也欢迎其他想法...

我同意亚历山大所说的话,正确的方法是使用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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM