最近,我面臨一個我認爲很容易實現的問題。 我有一個COM對象已經安裝在我的Windows 7機器上。 我想圍繞這個COM對象構建一個web服務或WCF服務。 不幸的是,無論我嘗試什麼似乎都沒用。互操作:在ASMX webservice或WCF服務中使用COM - C#
我安裝了Visual Studio 2008和2010。 使用VS IDE,我創建了對COM的引用,並且如預期的那樣,VS自動創建了訪問COM成員所需的interop DLL。
當我在一個winforms應用程序中嘗試這樣做時,一切正常,但在服務中使用時,我的運氣消失了。
的代碼supersimple,它看起來像這樣:
LCDirect_WebLogin.CoClass_n_ap_com com = (LCDirect_WebLogin.CoClass_n_ap_com)obj.Unwrap();
object value = null;
string name = "";
com.getsysteminfo(name, ref value);
if (value != null)
return value.ToString();
所以,在winform應用程序相同的代碼工作正常,但在IIS下崩潰。
一些額外的信息: 最後我需要部署在Windows 2003 Server上。 COM DLL依賴於PowerBuilder運行時。我在我的system32中複製了PB運行時,並且還在web服務的bin文件夾中複製了PB運行時。
我不認爲這是一個依賴性問題,而是調用非託管代碼的安全問題。
我也嘗試使用應用程序池和使用管理員帳戶運行下運行webservice更多proviledged帳戶下運行。同樣的問題。
任何想法? 謝謝。
IIS有不同的安全設置,整個堆棧 - 它可能從裝入積極阻止您的COM二進制文件工作進程。也許嘗試http://serverfault.com/尋求幫助? – 2011-03-10 08:58:05