2009-12-01 60 views
0

這是一個很難回答的問題。 我們有一個ASP.NET應用程序,IIS7服務器(運行經典的管道,如果相關的話)和一個醜陋的COM對象庫。
應用程序這樣使用這個庫:調用一個函數,取得結果,顯示它。
問題是:COM庫沒有更改語言首選項的功能 - 它從「web.config」文件初始化它,然後沒有明顯的方法來更改它。
問題是:如何做到這一點不平凡的方式。我可以用ASP.NET應用程序和服務器本身的一些東西做任何事情。
基本上,我想我需要的是以某種方式爲應用程序池線程調用SetThreadCultureUI()。 另外,當然,我可以爲每種語言創建幾個應用程序域,並在它們中加載COM,但這會導致編碼過多。從外部改變一些COM「東西」

Soo ..任何想法都可以做到最快,最簡單的方法嗎? (多個應用程序池與一個應用程序的副本已經是一個使用的解決方案,但不好)

回答

0

您需要做一些測試。如果COM應用程序真的從web.config中讀取語言設置(坦率地說,如果它確實是非常不尋常的話),那麼你可以做的事情就不多了。重寫web.config非常困難,尤其是因爲您在保存文件時重新啓動應用程序池!

但是,如果它檢查給定線程文化的操作系統,則可以在代碼中使用BackgroundWorker來產生新線程。在那裏,你可以設置文化,並調用你的COM對象(適當的lock,以確保線程安全),沒有太多的額外開銷。

另外,是的,多個應用程序池是一個重量級的,但微不足道的問題的答案。如果COM庫讀取web.config,我認爲這是唯一的解決方案。