2011-06-22 17 views
0

喜開發商/建築師,爲IIS或Single上的每個客戶端分別使用ASP應用程序?

這更多的是一個建築問題:

我有一個Web應用程序。該應用程序使用ASP Membership API(來自認證)進行用戶/角色管理。

我們爲每個客戶託管一個單獨的應用程序。所以基本上每個客戶都有一個ASP成員數據庫中的應用程序名然後該客戶根據他的需要創建他的角色/用戶。

我們爲每個客戶端分別在客戶端名稱的虛擬目錄下託管IIS的同一網站的原因是,所有客戶端都有其單獨的應用程序名稱(根據ASP成員身份),並且底層數據庫是單獨的也爲每個客戶。

所以每個客戶端都有一個單獨的URL,例如:http://mysite/client1。然後client1有他自己的用戶,角色。應用程序使用的底層應用程序數據庫是個人客戶。

Web應用程序和數據庫模式對於所有客戶端完全相同。

我不能對數據庫部分做出任何決定。所以我不打算討論這個問題。

但我想改變爲每個客戶端託管單獨的應用程序的方法。我想舉辦對所有客戶端一個應用程序:

這會帶來一些問題:

Q1。我將如何創建這些網址:http://mysite/client1,http://mysite/client2(因爲我不能將所有客戶端的名稱放在主登錄頁面上,然後一旦用戶選擇客戶端名稱,提供用戶名/密碼....我無法這樣做,因爲業務性質)*

Q2。我無法創建單個應用程序(在IIS和ASP成員級別上),然後按角色分隔客戶端,因爲所有客戶端都有自己的角色,另外,2個或更多客戶端可以具有相同名稱的用戶;所以userX用於client1,userX用於client2。這些用戶是不同的,但他們碰巧有相同的名字。

* Q1的一個解決方案是:我創建一個新的轉發器應用程序,該應用程序在客戶端的虛擬目錄下分別託管在每個客戶端的IIS中。當客戶端打開它們的URL(例如:http://mysiteforworder/client1)時,它們被重定向到(http://mysite/Default.apsx?app = hjuk98jkio8),其中(hjuk98jkio8)是我們在內部使用的客戶端的加密名稱。

這將解決Q1,但不是Q2。

讓我知道可以怎麼做...

+0

或者可能是這種情況下的最佳方法,是單獨託管應用程序(因爲它現在正在發生......因爲即使所有應用程序的外觀/行爲都相同,客戶端在這種情況下實際上是單獨的應用程序......什麼你們建議...) – user402186

回答

1

這裏是我以前也用過幾次的想法。

您可以在IIS中設置多個Web應用程序/虛擬目錄,例如/ client1和/ client2,它們指向磁盤上的相同物理Web應用程序路徑。這樣,所有客戶的代碼都是相同的,都是集中管理的,但對於不同的客戶有不同的URL。

使用WMI,您甚至可以在IIS中編寫腳本或自動創建/維護webapps/vdirs。

要確定要連接哪個數據庫或運行哪個應用程序,您可以查看正在訪問的URL,並將該路徑的第一部分用作該客戶的配置字典中的鍵。

+0

我想我喜歡你的想法...我可以使用相同的方法爲WCF應用程序...(我沒有提到任何上述的東西...只是考慮我有相同的senario,因爲很少的客戶端,這是唯一的WCF應用程序客戶端...)我認爲你的解決方案將適用於Web應用程序,我可以確定如果請求通過WCF也可以確定什麼是URL ...?如果可以的話,我認爲這種方法可以採取......你說什麼......? – user402186

+0

是...可以做...感謝... – user402186

相關問題