2014-10-20 203 views
0

我會立即說明我對Xamarin開發非常陌生。這就是背景:無法從Silverlight訪問Mac自行託管的WCF服務

我們有一個Silverlight應用程序,它能夠在Windows中託管時成功連接到自託管的WCF服務。由於我們需要將此服務成功託管在Mac上,因此我們將其移植到Xamarin,並且可以使用簡單的非Silverlight控制檯應用(即手動設置端點和通道)連接到自託管服務。

當試圖通過Silverlight的連接,我收到以下異常:試圖使請求URI「...」發生

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

Xamarin是否可以通過流提供訪問和跨域策略(如this example)?我也想知道在客戶端的ServiceReferences.ClientConfig中需要發生什麼(如果有的話)。

任何指針在正確的方向將不勝感激。

謝謝。

回答

0

我能夠通過設置服務主機和單獨的Web服務主機來爲訪問策略提供服務來解決此問題。我仍然使用原始文章中引用的示例中的代碼,但只是將訪問策略的服務分離到它自己的Web服務主機中,而不是作爲主服務主機上的附加端點。

Uri httpUrl = new Uri("http://192.168.2.230:8090/MyService"); 
    Uri webHttpUrl = new Uri("http://192.168.2.230:8090/"); 
    //Create ServiceHost 
    ServiceHost host = new ServiceHost(typeof(MyService), httpUrl); 
    WebServiceHost webHost = new WebServiceHost (typeof(AccessPolicyService), webHttpUrl); 
相關問題