2014-10-20 132 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); 
相关问题