无法使用 Xamarin 和 WCF 访问 Web 服务



我想使用 Xamarin 和 WCF 使用公共 Web 服务。对于此演示,我将使用 Xamarin.iOS

这是我尝试使用的(公共(网络服务:

http://www.webservicex.net/globalweather.asmx?WSDL

在 Xamarin Studio 中,我添加了一个包含来自 Web 服务的 URL 的 Web 引用。所选框架设置为Windows Communication Foundation (WCF(。

现在,我使用以下代码与服务连接:

var _client = new GlobalWeatherSoapClient();
_client.BeginGetWeather ("Berlin", "Germany", (ar) => {
    var result = _client.EndGetWeather(ar);
}, null);

执行此代码时,我得到一个System.NullReferenceException.这就是问题所在,为什么它不能正常工作?

最奇怪的部分是:当我不使用WCF,而是选择.NET 2.0 Web服务作为框架时,一切似乎都工作正常。

我看不出我的 WCF 代码出了什么问题 - 根据文档,一切应该正常。

我希望有人能帮助我!提前感谢!

您没有遵循文档。

引用该页面:

若要生成用于 Xamarin.iOS 项目的 WCF 服务的代理, 使用 Microsoft SilverlightServiceModel 代理生成工具 (SLSvcUtil(,随 Windows 上的 Silverlight SDK 一起提供。这个工具 允许指定可能需要的其他参数 保持对服务终结点配置的合规性。

因此,第一件事是您需要使用slsvcutil在Windows机器上创建一个代理。通过 Xamarin Studio 向项目添加 WCF 引用不起作用。它仅适用于 .NET 2.0 Web 服务,这就是该选项正常的原因。

第二件事,在使用 slsvcutil 在 Windows 上创建代理后,您需要将其添加到您的项目中。

第三,你需要像这样初始化它,使用基本的 http 绑定(再次,来自上面链接的代码(:

var binding = new BasicHttpBinding () {
        Name= "basicHttpBinding",
        MaxReceivedMessageSize = 67108864,
};
//...
client = new Service1Client (binding, new EndpointAddress ("http://192.168.1.100/Service1.svc"));

建议:忘记iOS上的WCF。该文章包含有关其他客户端-服务器通信方式的非常有用的信息。

最新更新