簡體   English   中英

與IIS的第三方DLL的WCF服務連接

[英]WCF service connection with third party dll with IIS

我正在使用Windows 7,VS2010,SqlServer 2008。

我的應用程序從第三方dll(它從另一個必須在后台運行的進程獲取數據)中獲取數據,並處理數據並通過WCF服務將其發送到前端。

應用程序已完成並完成它應該執行的操作。 現在,當我想分發它並在IIS中運行它。 我面臨一個奇怪的問題。 當我在IIS中運行它時,應用程序從dll獲取數據它失敗並在連接到dll時出錯。

由於以下錯誤,檢索具有CLSID {FCEC6861-5866-4F9E9A09-7CC868C30A8B}的組件的COM類工廠失敗:80070005訪問被拒絕。 (來自HRESULT的異常:0x80070005(E_ACCESSDENIED))。

經過一些研究后我發現了組件服務,在DCOM配置中,我將dll的安全性改為每個人。 錯誤停止了。

但是現在我沒有得到錯誤,但是當提供數據的軟件關閉時,我沒有得到數據。 但是我的ASP.net開發服務器可以正常工作。

另外我發現當我以管理員模式運行Visual Studio時,我也必須在管理模式下運行第三方數據軟件。

dll引用不會自動復制到bin文件夾中,它放在obj文件夾中我手動復制它但它不起作用。

我認為發生的是COM組件在與調用者相同的上下文中運行,並且它需要提升的權限來執行其工作。

所以:

  • VS處於管理模式,COM處於管理模式,因為兩者都具有系統范圍的權限來執行其工作。
  • 在app pool帳戶下運行的IIS(不確定是哪個),COM也將在該帳戶下,但它不是管理員,因此權限太低,無法正常工作。

我的故障排除建議是將您的應用程序運行的IIS應用程序池更改為本地管理員。 如果可行,請將DCOM上的訪問權限恢復為默認值(在更改為所有人之前),然后重試。 您可能還嘗試在本地系統帳戶下運行應用程序池以查看會發生什么。 如果仍然有效,您已確認此行為是問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM