我会立刻说明我对Xamarin开发很新。也就是说,这是背景:
我们有一个Silverlight应用程序,当它在Windows中托管时,能够成功连接到自托管的WCF服务。由于我们也需要在Mac上成功托管此服务,因此我们将其移植到Xamarin,并使用简单的非Silverlight控制台应用程序(即手动设置端点和通道)连接到自托管服务。 / p>
尝试通过Silverlight进行连接时,我遇到以下异常:
尝试向URI'...'发出请求时发生错误。这个 可能是因为尝试以跨域方式访问服务 没有适当的跨域政策或政策 不适合SOAP服务。您可能需要联系该所有者 服务以发布跨域策略文件并确保它允许 要发送的与SOAP相关的HTTP标头。此错误也可能是由此引起的 使用Web服务代理中的内部类型而不使用 InternalsVisibleToAttribute属性。请查看内部异常 了解更多详情。
Xamarin是否可以通过流提供访问和跨域策略(如this example中所述)?我也想知道在客户端的ServiceReferences.ClientConfig中需要进行其他更改(如果有的话)。
任何指向正确方向的人都会非常感激。
感谢。
答案 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);