close

這錯誤跟前一篇類似可以參考: 發出 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>

 

 

arrow
arrow
    文章標籤
    Asp.net Debug http https
    全站熱搜
    創作者介紹
    創作者 阿駿 的頭像
    阿駿

    阿駿的部落格

    阿駿 發表在 痞客邦 留言(0) 人氣()