2013-07-31 22 views
0

我有一個使用COM +組件的應用程序。我試圖讓這個應用程序在IIS中的多個應用程序上工作。每個應用程序都有自己的應用程序池這就是爲什麼我需要爲每個應用程序分開一個COM +組件。一種隔離COM +應用程序的方法是使用COM +分區。IIS和COM +分區:無法創建ASP應用程序XXX由於無效或缺少COM分區ID

我在Windows Server 2008 R2服務器上的組件服務管理工具中創建了分區。我創建了分區,並在每個分區中創建了一個COM +應用程序。 在IIS中,我有不同的應用程序池中運行的網站。我將每個網站配置爲使用分區,併爲其分配一個存在的分區GUID。 當我使用分區guid設置IIS並使其能夠使用分區後,在IISRESET之後,我在瀏覽器中運行網站,並收到HTTP 500內部服務器錯誤。我查看了事件查看器,這是錯誤消息:由於無效或缺少COM分區ID而無法創建ASP應用程序XXX。

如果我禁用組件服務管理工具中的分區並禁用IIS中分區的使用,那麼應用程序也可以使用。 我需要能夠使用分區來允許多個網站與這些COM +對象同時運行。

回答

1

經過對此主題的大量研究後,我發現解決方案:不要從IIS使用PartitionId,也不要從IIS啓用分區。將它們保留爲默認值。

解決方法如下:每個分區應該分配給一個用戶的默認分區,每個IIS應用程序(以及每個應用程序池)應該運行在默認分區使用的相同用戶上。 所以基本上如果你有兩個IIS應用程序命名爲:web1和web2,以及兩個應用程序池:app1和app2,兩個用戶user1和user2以及兩個分區:part1和part2。 web1應該在user1下運行,並且app1也應該在user1下運行(app1是web1的應用程序池)。然後在組件服務中,user1應該有默認分區:part1。然後,當web1將搜索COM +組件時,它將首先嚐試在分配給該IIS應用程序的用戶的分區中搜索它:user1。 User1具有默認分區part1,因此它可以找到它。

提示:要啓用Windows Server 2008 R2上的com +分區,請轉到組件服務>我的電腦>右鍵單擊它>屬性>選項選項卡>選中啓用分區,另選另一個:選擇用戶分區時檢查本地存儲。 分區只能在Windows Server版本中啓用。該選項在Windows 7中被禁用,我無法找到啓用它的方法。

希望這會有所幫助。

不要忘記在每個分區下添加COM +應用程序,並在其中添加用戶,以便用戶可以訪問它們。因此,請在分區角色中添加用戶,並在COM +分區用戶目錄中的組件服務中的我的電腦下添加用戶。