這錯誤跟前一篇類似可以參考: 發出 HTTP 要求時發生錯誤。這可能是在 HTTPS 的情況下,未在 HTTP.SYS 正確設定伺服器憑證所造成。也可能是用戶端與伺服器之間的安全性繫結不相符所造成。
錯誤內容:提供的 URI 配置 'https' 無效; 預期 'http' 參數名稱: via
基本觀念:
要使用WebService的伺服器方法有兩個 1.引用對方Reference 2.使用對方wsdl檔案裡面內容
wsdl 我理解為 WebService.asmx 這個服務所產出的條列式設定檔。
這邊直接說重點,
1.wsdl檔案這個設定檔裡面,會有一個是WebService 伺服器站台位置。
2.以及 SoapAction 這邊也會是一個url,我理解為這是站台底下,WebService 真正要傳遞資料時的方法(也就是協定,不同於http協定)
所以他也有一個自己的url。
發生原因:
1.基於上述基本觀念,發生原因在於,目標站台位置可能換了,像是 http ://exp.com--> https://exp.com
所以我們打目標WebService 的位置 會變成 https://exp.com,但是參考檔 wsdl 裡面 所綁定的 service address location 沒有跟著換,(如下程式碼)
<wsdl:service name="目標webservice名稱">
<wsdl:port name="目標webservice名稱Soap" binding="tns:目標webservice名稱Soap">
<soap:address location="http ://exp.com/目標webservice名稱.asmx" />
</wsdl:port>
</wsdl:service>
local端打出的 https://exp.com/目標webservice名稱.asmx ,沒對應到參考檔 wsdl裡面的http ://exp.com/目標webservice名稱.asmx。
所以會出現 提供的 URI 配置 'https' 無效; 預期 'http' 參數名稱: via 的錯誤。
解法:
把專案參考的WSDL(找到下面程式碼,換掉 address location),換成跟你打出去的目標站台位置有相同。
<wsdl:service name="目標webservice名稱">
<wsdl:port name="目標webservice名稱Soap" binding="tns:目標webservice名稱Soap">
<soap:address location="http ://exp.com/目標webservice名稱.asmx" />
</wsdl:port>
</wsdl:service>
留言列表