XAMARIN中的Web Service ASMX错误

时间:2018-08-17 19:09:06

标签: c# web-services xamarin service

在Xamarin.forms中调用Web服务(asmx)时遇到问题。我的网络服务可以在Android上运行,并且是通过svcutil.exe生成的,但是当我在IOS中对其进行测试时,我遇到了一个问题:

  

“ Mono touch不支持动态代理代码生成”

搜索后,我发现必须使用称为SLSvcutil.exe的Silverlight工具才能覆盖CreateChannel方法并使其在IOS中起作用。它有效,但是我需要使方法同步(异步)。

我一直在搜索如何为我的Web服务制作纯同步方法,结果发现:Monotouch/WCF: How to consume the wcf service without svcutil

这是我的代码:

protected override POService2Soap CreateChannel()
{
    return new POService2SoapClientChannel(this);
}

private class POService2SoapClientChannel : ChannelBase<POService2Soap>, POService2Soap
{

    public POService2SoapClientChannel(System.ServiceModel.ClientBase<POService2Soap> client) : 
            base(client)
    {

    }


 public ClientLoginResponse ClientLogin(ClientLoginRequest request)
        {
            object[] _args = new object[1];
        _args[0] = request)
        return (ClientLoginResponse)base.Invoke("ClientLogin", _args);
        }

我从Silverlight生成的代码获取接口,并在那里创建LoginResponse类,但问题出在我调用base.invoke("Client Login",_args)的地方。

基本上,ChannelBase没有 Invoke 方法,只有 BeginInvoke EndInvoke 。所以我得到了问题,因为ClientBase的ChannelBase类中没有Invoke。我该如何调用它,或者没有人有更好的解决方案来从Web服务获取同步结果?

P.S。 我知道为什么Silverlight具有 async 方法,而且我知道现在最好异步,而且我还知道,尤其是在移动开发中,Web服务(asmx)有点“过时” 。但就我而言,我需要这样。

谢谢。

0 个答案:

没有答案