2011-06-24 127 views
2

我看到了這個問題上的一些線程,但沒有人爲我工作。我有一個簡單的Silverlight應用程序。我使用WCF服務。當我從服務調用方法GetOrderList時,出現以下錯誤:Silverlight WCF問題與跨域策略文件

嘗試向URI發送請求時出錯了錯誤:https://testserver2.mydomain.org/ORDERNET/WCFServices/OrderService/OrderService.svc 」。這可能是由於嘗試以跨域方式訪問服務而沒有適當的跨域策略或者不適合SOAP服務的策略。您可能需要聯繫服務的所有者以發佈跨域策略文件,並確保它允許發送與SOAP相關的HTTP頭。使用Web服務代理中的內部類型而不使用InternalsVisibleToAttribute屬性也可能導致此錯誤。有關更多詳細信息,請參閱內部例外。

這裏是我的代碼:

public partial class MainPage : UserControl 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
      ServiceReference1.ServiceClient sc = new ServiceReference1.ServiceClient(); 
      sc.GetOrderListAsync("testuser"); 
      sc.GetOrderListCompleted += new EventHandler<ServiceReference1.GetOrderListCompletedEventArgs>(sc_GetOrderListCompleted); 
     } 

     void sc_GetOrderListCompleted(object sender, ServiceReference1.GetOrderListCompletedEventArgs e) 
     { 
      var RESULT = e.Result; 
     } 
    } 

這是我把我的wwwroot我的客戶端訪問策略文件:

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

當我運行小提琴手,它發現了「clientaccesspolicy.xml」與200 OK(文本/ XML),所以我知道是找到該文件。

可能是什麼問題?我有一個無效的策略文件嗎?如果我創建一個控制檯應用程序並使用該服務,則可以調用該方法來解決問題。

任何想法?

+0

在提琴手,你看到的請求將服務本身?如果是這樣,服務的迴應是什麼? – carlosfigueira

+0

我看到https協議..它是正確的?嘗試使用http協議並在您的clientconfig文件中使用httpbinding –

回答

0

我有類似的問題,但服務有http協議,這是使用.clientconfig文件解決。

0

我注意到你正在使用HTTPS(HTTPS://testserver2.mydomain.org/ORDERNET/WCFServices/OrderService/OrderService.svc)

您是否嘗試過明確添加https://開頭*的URI您的跨域策略文件:

<domain uri="https://*"/> 

如果需要支持http,再加入兩個:

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

Silverlight Cross Domain Web Service Access Error - This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place

感謝.....

+0

另請參閱:http://www.byteblocks.com/post/2010/03/09/Silverlight-Cross-Domain-Web-Service-Access-Error.aspx –

+0

我欣賞不錯的發現 –