【问题标题】:xamarin PCL consume WCF: unhandled exception in Androidxamarin PCL 使用 WCF:Android 中未处理的异常
【发布时间】:2017-04-27 12:43:13
【问题描述】:

我是 xamarin 的新手。

我使用 Visual Studio 2017 社区并编写了一个非常简单的代码:我想连接到一个基本的 WCF 服务。

服务链接:

http://services.adserviceitalia.it/Service1.svc

(GetHello方法,输入字符串和返回字符串...非常基本的方法)

我阅读了很多示例...我添加了对服务的引用,生成代理类...好的!!

 public partial class MainPage : ContentPage
{

  private  wcfs.Service1Client ws;


    public MainPage()
    {
        InitializeComponent();


        var endpoint = new EndpointAddress("http://services.adserviceitalia.it/Service1.svc");
        var 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;

        ws = new wcfs.Service1Client(binding,endpoint);
        ws.GetHelloCompleted += Handle_HelloWorldCompleted;

    }

    private void Button_Clicked(object sender, EventArgs e)
    {

        ws.GetHelloAsync("Mark");

      }


    private void Handle_HelloWorldCompleted(object sender, wcfs.GetHelloCompletedEventArgs args)
    {

        label1.Text =   args.Result;
    }

    }
}

它在 UWP 调试中工作...

Connection with WCF... Hello World working in UWP

我在 Android 中遇到了一个未处理的异常...

在 Android Manifest 中检查所有权限。 Android 模拟器已连接到互联网...

我们将不胜感激任何帮助!!在此先感谢...请原谅我的英语。

【问题讨论】:

  • Android出现什么异常?
  • 我不知道... :-((( 仅出现一个窗口:“发生未处理的异常”没有参考文献
  • 打断 - 然后使用调试器查看异常和堆栈跟踪
  • 我无法完成这项任务。异常触发: ws.GetHelloAsync("Mark");我可以制作一些屏幕截图......但信息不足:-( imgur.com/a/zuxrT
  • 您需要学习如何使用调试器。检查 Exception 对象应该可以让您看到服务器返回的异常 - 可能在 InnerException 属性中

标签: c# wcf xamarin.android xamarin.forms visual-studio-2017


【解决方案1】:

运维...

首先:谢谢大家!!

在我的日志中,我读到: 04-27 14:11:30.106 E/mono-rt (5308): [ERROR] FATAL UNHANDLED EXCEPTION: Android.Util.AndroidRuntimeException: 只有创建视图层次结构的原始线程才能触及其视图。

似乎问题是我尝试使用 WCF 响应直接在 Handle_HelloWorldCompleted 中更新界面:

 label1.Text =   args.Result;

...在我这样修改代码:

 //label1.Text =   args.Result;
 System.Diagnostics.Debug.WriteLine(args.Result);

我可以看到 arg.Result 由 WCF 响应“Hola Mark”填充(ergo:与服务的连接有效!!)。

请注意,我仅在 Android 调试中存在此行为。

如何更新 label1 ??

【讨论】:

  • 谢谢杰森。 ;-) 这有效:Device.BeginInvokeOnMainThread(() => { label1.Text = args.Result;});我不知道如何实现 Activity.RunOnUiThread。很不一样??
  • 谢谢杰森。我很感激你花了一些时间来帮助我。我对环境完全陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多