簡體   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