【问题标题】:Consume WCF service in Xamarin Forms在 Xamarin Forms 中使用 WCF 服务
【发布时间】:2019-08-28 13:25:25
【问题描述】:

我可以将 xamarin 中的 WCF 服务与 .net 框架类库文件集成。 WCF - 在 .net Framework 4.5 中开发 Xamarin - 在 .net Core 2.2 中开发

这里我无法使用使用 .net 框架创建的 WCF 服务。但是我可以使用我创建的具有相同 .net 框架版本的 Asp.Net 项目的服务。

在 xamarin 中使用它需要做什么

【问题讨论】:

标签: wcf xamarin xamarin.forms xamarin.android


【解决方案1】:

嗨科林/杰森/哈基姆.....

使用在同一框架中创建的 ASP.net 使用 WCF 时没有问题。但无法在 Xamarin 中消费...下面是代码...

public class Class1
{
    public UserInfo GetUser(string username, string password)
    {
        WSHttpBinding binding = new WSHttpBinding();
        TimeSpan span = new TimeSpan(0, 3, 0);

        binding.Name = "WSHttpBinding_IService";
        binding.CloseTimeout = span;
        binding.OpenTimeout = span;
        binding.ReceiveTimeout = span;
        binding.SendTimeout = span;
        binding.AllowCookies = false;
        binding.BypassProxyOnLocal = false;
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        // binding.MaxBufferSize = 65536;
        binding.MaxBufferPoolSize = 524288;
        binding.MaxReceivedMessageSize = 65536;
        binding.MessageEncoding = WSMessageEncoding.Text;
        binding.TextEncoding = Encoding.UTF8;
        //binding.TransferMode = TransferMode.Buffered;
        binding.UseDefaultWebProxy = true;
        binding.ReaderQuotas = new XmlDictionaryReaderQuotas();
        binding.ReaderQuotas.MaxDepth = 32;
        binding.ReaderQuotas.MaxStringContentLength = 8192;
        binding.ReaderQuotas.MaxArrayLength = 16384;
        binding.ReaderQuotas.MaxBytesPerRead = 4096;
        binding.ReaderQuotas.MaxNameTableCharCount = 16384;
        binding.Security.Mode = SecurityMode.TransportWithMessageCredential;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
        binding.Security.Transport.Realm = string.Empty;
        binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
        binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Default;

        ICFService.ServiceClient client = new ServiceClient(binding, new EndpointAddress("..../Service.svc"));
        client.ClientCredentials.UserName.UserName = username;
        client.ClientCredentials.UserName.Password = password;

        return client.CheckUser(new UserRQ() { UserName = username, Password = password });
    }
}

Xamarin 按钮点击

        try
        {
            APIServiceLibrary.Class1 api = new APIServiceLibrary.Class1();
            var user = api.GetUser(Entry_Username.Text, Entry_Password.Text);
            if (user != null)
            {

            }
        }
        catch (Exception ex)
        {
            throw ex;
        }            

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2018-06-05
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2019-05-08
    • 2014-11-03
    相关资源
    最近更新 更多