2016-09-07 48 views
1

我正在使用64位Windows7家庭高級SP1和VS2015。WCF調用第三方DLL只適用於VS2015,但不是沒有

我寫了一個WCF應用程序,它調用了用C#編寫的第三方dll(來自供應商)。當我通過在VS2015解決方案資源管理器中右鍵單擊ProductREADService.svc「在瀏覽器中查看」時,可以調用svc(localhost:17476/ProductRESTService.svc)和方法(這將調用第三方dll localhost:17476/ProductRESTService.svc/getproductlist/1),並且WCF在瀏覽器(chrome和IE)上沒有任何問題,正確返回xml結果。

現在我想讓這個WCF在沒有VS2015的情況下運行,因爲我需要它在生產環境中運行。

問題:

1) 然而,當我發佈此WCF到IIS7.5,我能夠調用SVC(本地主機:8123/ProductRESTService.svc)沒有問題,但是當我調用的方法(localhost:8123/ProductRESTService.svc/getproductlist/1)我遇到了請求錯誤「服務器在處理請求時遇到錯誤,請參閱服務器日誌以獲取更多詳細信息。」 當我檢查日誌時,我發現這個: 2016-09-07 12:46:44 :: 1 GET /favicon.ico - 8123 - :: 1 Mozilla/5.0 +(Windows + NT + 6.1; + WOW64)+ AppleWebKit/537.36 +(KHTML,+ like + Gecko)+ Chrome/52.0.2743.116 + Safari/537.36 404 0 2 3 2016-09-07 12:48:26 :: 1 GET /ProductRESTService.svc/getproductlist/1 - 8123 - :: 1 Mozilla/5.0 +(Windows + NT + 6.1; + WOW64)+ AppleWebKit/537.36 +(KHTML,+ like + Gecko)+ Chrome/52.0.2743.116 + Safari/537.36 400 0 0 4

我試着將DefaultAppPool標識更改爲LocalService和我的Windows登錄ID,沒有任何效果。

爲了確認問題在於第三方DLL,我改變了方法getproductlist不要加載/調用第三方DLL,而是返回固定的虛擬值,現在兩者都可以很好地工作。所以我相信這個問題是由沒有VS2015的情況下運行的DLL引起的。

2)我恢復了代碼並停止了IIS,並嘗試運行IISExpress(使用vs2015使用的IISexpress)。我使用與VS2015相同的配置文件在/config:path-to-code.vs\config\applicationhost.config中啓動它...我遇到了完全相同的問題,而在訪問localhost:17476/ProductRESTService.svc時沒有問題..但訪問方法localhost:17476/ProductRESTService.svc/getproductlist/1時遇到錯誤。

問:

Q1)是怎麼來的WCF調用第三方DLL只使用VS2015推出,而不是當通過IIS7.5或IISexpress獨立啓動時的作品?

q2)如何將IISexpress設置/ config從VS2015複製到IIS7.5和c:\ program files \ IIE Express \ IISexpress.exe中?

任何幫助將不勝感激。謝謝!

更新: 2)我發現IISExpress的問題..我改爲 「C:\ Program Files文件(x86)的\ IIS快遞\ iisexpress.exe」,而不是 「C:\ Program Files文件\」 和svc和方法都有效!爲什麼不是「C:\ Program Files」,因爲我的操作系統是64位?

我還是不能讓IIS工作,任何幫助將不勝感激!

謝謝!

+0

你可以在本地機器上安裝IIS,看看你是否可以在那裏配置它?很可能它沒有找到第三方DLL。是否需要安裝?路徑是否一樣? – wvisaacs

+0

是的IIS和IISexpress都在本地PC上。奇怪的是IISexpress網站(端口17476)只有當我使用VS2015運行時才能完美運行。當我從命令行運行沒有VS2015的IISexpress(端口17476)時,只有svc工作... getproductlist方法不起作用。 – mango

回答

0

更新解決!

我設法解決了這個問題。在IIS 76年5月7日我設置默認應用高級設置來

1)的.NET Framework 4.0版

2)使能的32位應用程序=真

3)身份=本地系統

現在,我的WCF服務和方法(調用第三方DLL)與IIS一起工作,我可以將其作爲生產服務運行!

相關問題