Xamarin.Forms从iOS连接到Wcf服务

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

标签: c# wcf xamarin.forms xamarin.ios channelfactory

大家好!

我有一个问题:我有WCF服务。另外,我还有一个Xamarin.Forms应用程序,它连接到服务器。 我第一次使用slsvcutil.exe进行此操作,但是该解决方案似乎并不真正合适,它是基于事件构建的,因为存在很多事件,并且代码难以读取。 当我尝试通过ChannelFactory进行操作时,它适用于Android。目前,Android没问题,但由于CreateChannel()方法,对于iOS来说,它根本无法工作。我使用这些链接在ChannelBase上做了另一个课程:

first linksecond link

,错误消失。但是它只是没有连接到我的WCF服务... 尝试连接几天,但仍然没有任何结果... 也许有机会以其他方式做到这一点? 任何帮助将不胜感激。

p.s。我的iOS界面和类的代码:

public class NewClassForConnectionIOS : ClientBase<IAis7MobileIssoSServerCoreXamarin>, IAis7MobileIssoSServerCoreXamarin
    {

        public NewClassForConnectionIOS() : base() { }

        public NewClassForConnectionIOS(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }

        public NewClassForConnectionIOS(string endpoint) : base(endpoint) { }


        public string[] HttpsGetSessionIdForIssoS(string user, string pass)
        {
            return ((NewClassForConnectionChannel)base.Channel).HttpsGetSessionIdForIssoS(user, pass);
        }

        public IAis7MobileIssoSServerCoreXamarin CreateConnection()
        {
            return CreateChannel();
        }

        protected override IAis7MobileIssoSServerCoreXamarin CreateChannel()
        {
            return new NewClassForConnectionChannel(this);
        }

        private class NewClassForConnectionChannel : ChannelBase<IAis7MobileIssoSServerCoreXamarin>, IAis7MobileIssoSServerCoreXamarin
        {
            public NewClassForConnectionChannel(ClientBase<IAis7MobileIssoSServerCoreXamarin> client) : base(client) { }

            public string[] HttpsGetSessionIdForIssoS(string user, string pass)
            {
                return (string[])base.Invoke("HttpsGetSessionIdForIssoS", new object[] { user, pass });
            }

            //public IAsyncResult BeginHttpsGetSessionIdForIssoS(string user, string pass, AsyncCallback callback, object asyncState)
            //{
            //    object[] _args = new object[2];
            //    _args[0] = user;
            //    _args[1] = pass;
            //    return (IAsyncResult)base.BeginInvoke("HttpsGetSessionIdForIssoS", _args, callback, asyncState);
            //}

            //public string[] EndHttpsGetSessionIdForIssoS(IAsyncResult asyncResult)
            //{
            //    object[] _args = new object[0];
            //    return (string[])base.EndInvoke("HttpsGetSessionIdForIssoS", _args, asyncResult);
            //}
        }
    }

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName ="IAis7MobileIssoSServerCoreXamarin")]
    public interface IAis7MobileIssoSServerCoreXamarin
    {
        [System.ServiceModel.OperationContractAttribute(Action = "HttpsGetSessionIdForIssoS", ReplyAction = "http://tempuri.org/IAis7MobileIssoSServerCoreXamarin/HttpsGetSessionIdForIssoSResponse")]
        string[] HttpsGetSessionIdForIssoS(string user, string pass);
    }

1 个答案:

答案 0 :(得分:0)

如果这对某些人来说很有趣,我已经解决了这个问题。 如前所述,我的iOS设备与WCF服务之间没有连接。经过数天的搜索信息,我尝试通过物理Android设备(而不是模拟器)进行连接,并且也没有连接!

因此,我进行了调查,发现窗户打开了窗户防护板。禁用一切正常后!

如果您遇到这样的错误,请检查与远程设备的连接!希望能对某人有所帮助。