C# Xamarin.带WCF的表单

C# Xamarin.带WCF的表单,c#,.net,wcf,xamarin.forms,C#,.net,Wcf,Xamarin.forms,通常我写一个带问题的小主题,但不是今天。我为“很多文字”提前道歉,但这个问题让我筋疲力尽 主要任务是创建Xamarin.Forms应用程序,并通过WCF组织与数据库的通信 Visual Studio 2015 pro,最新更新,Xamarin,最新更新 第一步 这是我作出决定的基础。我创建了本主题中指定的WCF服务。首先-不配置对IIS Express的远程访问 添加:使用Windows窗体应用程序测试的WCF服务。考试通过了 第二步 正如我在前面指出的那样-Xamarin.Forms,而不是该

通常我写一个带问题的小主题,但不是今天。我为“很多文字”提前道歉,但这个问题让我筋疲力尽

主要任务是创建Xamarin.Forms应用程序,并通过WCF组织与数据库的通信

Visual Studio 2015 pro,最新更新,Xamarin,最新更新

第一步

这是我作出决定的基础。我创建了本主题中指定的WCF服务。首先-不配置对IIS Express的远程访问

添加:使用Windows窗体应用程序测试的WCF服务。考试通过了

第二步

正如我在前面指出的那样-Xamarin.Forms,而不是该主题中的Xamarin.Android。以下是创建Xamarin.Forms项目的步骤:

新项目-跨平台-跨平台应用程序(Xamarin.Forms或原生)-空白应用程序(UI技术)-Xamarin.Forms,代码共享策略-PCL(可移植类库)

第三步

第一个问题:VS2015中Xamarin.Forms的默认模板包括与WCF不兼容的目标平台。这意味着当我们有这个目标平台时,我们不能向PCL添加服务引用。这个问题花了很多时间,我的解决方案是:

  • 从NuGet Xamarin.Forms中删除-重新启动VS-打开PCL属性-单击更改目标平台-删除Windows Phone和Silverlight-重新启动VS-添加Xamarin.Forms NuGet-我找到的最好的一个
  • 将packages.config重命名为packages.config.BAK-对更改的平台执行相同的操作
在其中一种方法之后,将出现“添加服务引用”。第二种方法在尝试添加服务引用时导致崩溃

第四步

我们可以尝试添加VS中的服务引用,如“blue note”中Xamarin站点指南中所述,或者使用SLsvcUtil.exe生成服务客户端类

我的客户端:

public MainPage()
    {
        InitializeComponent();

        BasicHttpBinding binding = CreateBasicHttp();


        MyServiceClient client = new MyServiceClient(binding, new EndpointAddress("http://localhost:9607/MyService.svc"));
        client.DoWorkCompleted += Client_DoWorkCompleted;
        client.DoWorkAsync(10);

    }

    private void Client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
    {
        var result = e.Result;
    }

    private static BasicHttpBinding CreateBasicHttp()
    {
        BasicHttpBinding binding = new BasicHttpBinding
        {
            Name = "basicHttpBinding",
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647
        };
        TimeSpan timeout = new TimeSpan(0, 0, 30);
        binding.SendTimeout = timeout;
        binding.OpenTimeout = timeout;
        binding.ReceiveTimeout = timeout;
        return binding;
    }
第五步

运行服务。。。运行客户端。。。等待加薪工作完成。。。在e.Result中获取系统.Reflection.targetingException

任何人。。。请帮帮我。这个问题控制着我的生活。我睡不着,吃不下。。。我只是在想这个。。。问题

到我的DropBox获取源代码

固定的。主要问题:emulator的hocalhost不是主工作站的localhost。为本地网络创建访问解决了我的问题


WCF配置很复杂。我建议您创建一个单元测试(普通的C#应用程序,与Xamarin无关),并调用WCF服务以确保WCF服务配置正常。然后切换到Xamarin项目的疑难解答。编辑了我的帖子。WCF已在早期使用Windows窗体应用程序进行了测试。是否检查了InnerException值?无法访问它。出现在e中。结果刚刚被篡改的消息。可能在生成的服务客户端类中的某个地方。。。尚未测试。已检查是否存在异常。只需编辑我的帖子