Webservice 通過映射連接埠發布到外網,調用報錯解決

來源:互聯網
上載者:User

環境:

Webservice部署到內網機器,地址:http://aaa.bbb.ccc.ddd/xkzjk/LicensesService.asmx

通過連接埠影射到外網地址:http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx

同事碰到的第一個問題:

在Visual Studio中引用Webservice報如下錯誤:

在Visual Studio 2008下報如下錯誤:

Unable to download following files from.

http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx?wsdl

Do you want to skip these files and continue?

在Visual Studio 2010報如下錯誤:

An error(Details) occurred while attempting to find services at ‘http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx’

中繼資料套件含無法解析的引用:“http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx?wsdl”。
下載“http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx?wsdl”時出錯。
請求因 HTTP 狀態 503 失敗: Service Temporarily Unavailable。
中繼資料套件含無法解析的引用:“http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx?wsdl”。
中繼資料套件含無法解析的引用:“http://eee.fff.ggg.hhh:88/xkzjk/LicensesService.asmx?wsdl”。
If the service is defined in the current solution, try building the solution and adding the service reference again.

原因:

開發人員對Webservice不懂,WSDL不知道是幹什麼的,引用的地址少了?wsdl,第一個問題解決。

 

同事碰到的第二個問題:

調用具體webservice方法時時報如下錯誤

請求因 HTTP 狀態 503 失敗: Service Temporarily Unavailable。

說明: 執行當前 Web 請求期間,出現未處理的例外狀況。請檢查堆疊追蹤資訊,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細資料。
異常詳細資料: System.Net.WebException: 請求因 HTTP 狀態 503 失敗: Service Temporarily Unavailable。

分析:

具體去看異常內部資訊:

ResponseUri={http://eee.fff.ggg.hhh/xkzjk/LicensesService.asmx},開始沒仔細看,後來找了很久,發現少了外網映射的連接埠88。

原因:

在Visual Studio 2008中引用Webservice時,在Web.config中自動增加如下節

<applicationSettings>
    <Test.Web.Properties.Settings>
      <setting name="Test_Web_LicService_LicensesService" serializeAs="String">
        <value>http://eee.fff.ggg.hhh/xkzjk/LicensesService.asmx</value>
      </setting>
    </Test.Web.Properties.Settings>
  </applicationSettings>

在工程的Settings.settings檔案中增加了App的設定,代理類會使用該設定的變數。

在Visual Studio 2010中引用Webservice時,在Web.config中自動增加如下節

endpoint address="http://eee.fff.ggg.hhh/xkzjk/LicensesService.asmx"
        binding="basicHttpBinding" bindingConfiguration="LicensesServiceSoap"
        contract="ServiceReference1.LicensesServiceSoap" name="LicensesServiceSoap" />

定義了Webservice的一些基本資料。

 

請注意Visual Studio都把連接埠去掉了。手動在Web.config裡增加上88連接埠問題解決。

 

總結:第一個問題是因為對Webservice的原理不明白。第二個對Visual Studio引用Webservice的原理不清楚,只會用,現在很多人對Webservice的一些基本理論知識都不明白,就是上來就用Visual Studio引用,然後調用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.