“無法從http://XXX/XXX.svc?wsdl擷取中繼資料”錯誤的解決方案

來源:互聯網
上載者:User

昨天在用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/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.