我創建了一個Web項目,可以在發佈時以及在Visual Studio中進行調試時正常工作。當我通過引用管理器添加外部引用時,它會將其正確添加並在Visual Studio中運行到內部IIS Express。當我將網站發佈到我的服務器時,外部應用程序不起作用,看起來好像它們甚至不可用。Visual Studio外部引用無法在發佈的網站上工作
我錯過了什麼讓這些互操作的DLL在Web服務器中被看到?
必須有一些「鉤子」來連接到這些dll的,當在本地運行時使用,這在部署時不存在。簡而言之,這是一個我試圖部署到應用程序安裝並運行的服務器的API。當在VS本地運行時,API函數通常會正常運行,但在將其部署到同一臺服務器上的IIS網站時無法正常工作。 IIS網站具有完全權限,這不是問題,因爲此網站只能在內部網絡上運行,而不能在網絡上運行。
更新: 挖掘更深層次的奧祕我懷疑它與COM interop或API的使用方式有關。我已經將項目屬性設置爲「生成COM互操作」,並將API參考屬性設置爲Isolated = false,並將Embed Interop Type = True。我還爲整個項目設置了ComVisible = true。沒有生成錯誤。我可以看到.net或IIS日誌中沒有錯誤。我已爲所有適用的文件夾設置完全權限。那麼,我錯過了什麼?
我想我有社區難住這一個。我將嘗試改變爲一個後期調用者,看看是否有幫助。
對於感興趣的人來說,問題似乎是服務器上的DCOM權限。仍然不起作用,但至少服務器現在看到API,只是有COM異常錯誤,但這遠遠超出了我的能力。 API沒有源代碼或供應商支持。自從我爲API付款以來,這種事情讓我很生氣,當我要求協助時,他們說沒有可用的支持。
作爲一個方面說明。這些是COM參考。 – dcol 2014-11-04 22:37:26
你能更具體地瞭解這些dll嗎? – lockstock 2014-11-04 23:32:08
其中一個DLL是常用的,interop.VBA其他是供應商特定的。該DLL是從添加到Reference Manager中的可執行文件中提取的。此COM參考是一個將調用發送到本地計算機上運行的程序的API。當這些調用在VS本地進行時,它們就可以工作,但是當我將Web項目部署到同一臺服務器上時,COM不再起作用。 – dcol 2014-11-05 15:04:31