ArcGIS API for Silverlight 呼叫WebService出現跨域訪問報錯的解決方法

暖楓無敵發表於2014-12-31

      群裡好幾個朋友都提到過這樣的問題,說他們在Silverlight中呼叫了WebService方法,總報這個錯誤,貼圖如下:


解決辦法:

     1、確定你的Silverlight專案及承載Silverlight的Web程式根目錄下都包含2個跨域檔案,分別是crossdomain.xml和clientaccesspolicy.xml:

 crossdomain.xml檔案,如下:

<?xml version="1.0"?>
    <cross-domain-policy>
    <allow-access-from domain="*" />
</cross-domain-policy>
clientaccesspolicy.xml檔案,如下:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>


    2、在Silverlight中新增Web服務引用的時候,不要使用VS自帶的類似http://localhost:90801/XXX/xxx.asmx地址,將承載Silverlight的Web程式部署到IIS中,然後新增Web服務引用,地址類似http://localhost/XXX/YYY/xxx.asmx,當然前提你的WebService要是正確的。接下來的一步很重要,開啟引用完成後的服務引用配置檔案,如果服務地址在本地的話,請去掉地址中的應用程式名前面的符號,如下圖:




    通過以上步驟的處理後,除錯執行程式將不會出現跨域錯誤提示了,寫出來,讓後來遇到此問題的人能少走彎路。


相關文章