WCF服務部署到IIS上,然后通過web服務引用方式出現錯誤的解決辦法


本文轉載:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html

昨天在用IIS部署一個WCF服務時,碰到了如下錯誤:

理解了文檔內容,但無法進行處理。
  - WSDL 文檔包含無法解析的鏈接。
  - 下載“http://admin-pc/IISHostService/Service1.svc?xsd=xsd0”時出錯。
  - 基礎連接已經關閉: 接收時發生錯誤。
  - 無法從傳輸連接中讀取數據: 遠程主機強迫關閉了一個現有的連接。。
  - 遠程主機強迫關閉了一個現有的連接。
元數據包含無法解析的引用:“http://admin-pc/IISHostService/Service1.svc?wsdl”。
元數據包含無法解析的引用:“http://admin-pc/IISHostService/Service1.svc?wsdl”。
如果該服務已在當前解決方案中定義,請嘗試生成該解決方案,然后再次添加服務引用。

該錯誤是在使用svcutil生成client代碼時報的錯誤,服務是部署在IIS7上,部署的過程都是完全教科書式的進行。服務也正常啟動了,顯示如下內容

已創建服務。

若要測試此服務,需要創建一個客戶端,並將其用於調用該服務。可以使用下列語法,從命令行中使用 svcutil.exe 工具來進行此操作:

svcutil.exe http://leo-pc/IISHostService/Service1.svc?wsdl
按照提示直接用svcutil.exe http://admin-pc/IISHostService/Service1.svc?wsdl命令去生成代碼,就出現了開頭說的那個錯誤。而如果用visual studio的webdevserver啟動,則一切正常。

經過一輪谷百之后,發現網上有很多類似的情況,有的說是因為用了wsHttpBinding協議引起的,或者是元數據沒有正確公開,但都不是他們說的情況。后來找到了一篇文章,說的是添加WCF引用的一個陷阱。里面提到的情形跟我遇到的一致,原來問題出在權限,難怪用webdevserver可以很正常的運行
。原來在下載http://admin-pc/IISHostService/Service1.svc?xsd=xsd0時的權限不足,在瀏覽器直接訪問這個url會提示找不到頁面。原因就是IIS進程的用戶沒有訪問Windows\Temp目錄的權限。找到Temp目錄,然后找到IIS_USER用戶,授權即可。 具體可參考:http://merill.net/2008/04/wcf-add-service-reference-gotcha-with-windows-server/

 WCF服務部署到IIS上,然后通過web服務引用方式出現錯誤的解決辦法;如果wcf服務沒有托管在IIS上,只是在本地瀏覽方式托管后通過web服務引用方式是沒有這樣的問題。

問題描述是這樣的。

1、通過vs自帶的wcf服務DEMO,發布到IIS 上去的時候,通過web服務引用時候出錯。

2、WCF客戶端通過web服務引用時候,http://10.198.1.21:8089/Service1.svc 一直無法正常的添加引用。

然而通過http://10.198.1.21:8089/Service1.svc?wsdl 是可以正確的查看元數據信息。

3、 最終解決辦法是:原因就是IIS進程的用戶沒有訪問Windows\Temp目錄的權限。找到Temp目錄,然后找到IIS_USER用戶,授權即可。

為Temp目錄條件IIS_USER用戶。

 添加方法如下截圖:

5、修改Temp目錄后,成功添加web服務引用:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM