Xamarin.Forms 从 iOS 连接到 Wcf 服务
Xamarin.Forms Connection to Wcf Service from iOS
大家好!
我有一个问题:我有一个 WCF 服务。我还有一个连接到服务器的 Xamarin.Forms 应用程序。
我第一次用 slsvcutil.exe 做的,但解决方案似乎不太合适,它是建立在事件上的,因为有很多事件,代码很难阅读。
当我尝试通过 ChannelFactory
执行此操作时,它适用于 Android。现在 Android 没有问题,但是 iOS 由于 CreateChannel()
方法,它根本不起作用。我使用这些链接对 ChannelBase 做了另一个 class:
first link,
second link,
错误消失了。但它只是没有连接到我的 WCF 服务......
尝试连接了好几天,但仍然没有...
也许有机会以另一种方式做到这一点?
任何帮助将不胜感激。
p.s。我的 iOS 界面和 class:
的代码
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);
}
如果有人对此感兴趣,我已经解决了这个问题。
正如我提到的,我没有从我的 iOS 设备连接到我的 WCF 服务。经过几天的信息搜索,我尝试通过物理 Android 设备而不是模拟器进行连接,但它也没有连接!
所以我进行了调查,windows 攻击了我的 windows 防守者.... 蹩脚的错误。禁用后一切正常!
如果您遇到这样的错误,请检查您与远程设备的连接!希望对某人有所帮助。
大家好!
我有一个问题:我有一个 WCF 服务。我还有一个连接到服务器的 Xamarin.Forms 应用程序。
我第一次用 slsvcutil.exe 做的,但解决方案似乎不太合适,它是建立在事件上的,因为有很多事件,代码很难阅读。
当我尝试通过 ChannelFactory
执行此操作时,它适用于 Android。现在 Android 没有问题,但是 iOS 由于 CreateChannel()
方法,它根本不起作用。我使用这些链接对 ChannelBase 做了另一个 class:
first link, second link,
错误消失了。但它只是没有连接到我的 WCF 服务...... 尝试连接了好几天,但仍然没有... 也许有机会以另一种方式做到这一点? 任何帮助将不胜感激。
p.s。我的 iOS 界面和 class:
的代码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);
}
如果有人对此感兴趣,我已经解决了这个问题。 正如我提到的,我没有从我的 iOS 设备连接到我的 WCF 服务。经过几天的信息搜索,我尝试通过物理 Android 设备而不是模拟器进行连接,但它也没有连接!
所以我进行了调查,windows 攻击了我的 windows 防守者.... 蹩脚的错误。禁用后一切正常!
如果您遇到这样的错误,请检查您与远程设备的连接!希望对某人有所帮助。