无法从Silverlight访问Mac自托管WCF服务

时间:2014-10-20 16:06:31

标签: wcf silverlight soap xamarin

我会立刻说明我对Xamarin开发很新。也就是说,这是背景:

我们有一个Silverlight应用程序,当它在Windows中托管时,能够成功连接到自托管的WCF服务。由于我们也需要在Mac上成功托管此服务,因此我们将其移植到Xamarin,并使用简单的非Silverlight控制台应用程序(即手动设置端点和通道)连接到自托管服务。 / p>

尝试通过Silverlight进行连接时,我遇到以下异常:

  

尝试向URI'...'发出请求时发生错误。这个   可能是因为尝试以跨域方式访问服务   没有适当的跨域政策或政策   不适合SOAP服务。您可能需要联系该所有者   服务以发布跨域策略文件并确保它允许   要发送的与SOAP相关的HTTP标头。此错误也可能是由此引起的   使用Web服务代理中的内部类型而不使用   InternalsVisibleToAttribute属性。请查看内部异常   了解更多详情。

Xamarin是否可以通过流提供访问和跨域策略(如this example中所述)?我也想知道在客户端的ServiceReferences.ClientConfig中需要进行其他更改(如果有的话)。

任何指向正确方向的人都会非常感激。

感谢。

1 个答案:

答案 0 :(得分: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);