2017-05-16 47 views
0

我的应用程序Android执行我的代码时显示此错误:“对象引用未设置对象的实例”。 这就好像“e.Result”中没有任何内容。但是,我的webservice运作良好Web服务asmx Xamarin.Form不起作用

public MainPage() 
     { 
      InitializeComponent(); 


      Please.GardaSoapClient Ws = new Please.GardaSoapClient(new BasicHttpBinding(), 
         new EndpointAddress("http://webgarda20170508110006.azurewebsites.net/Garda.asmx")); 
      Ws.HelloCompleted += Ws_HelloCompleted; 
      Ws.HelloAsync(); 

      } 

     private void Ws_HelloCompleted(object sender, Please.HelloCompletedEventArgs e) 
     { 
      Device.BeginInvokeOnMainThread(async() => { 
        string error = null; 
        if (e.Error != null) 
         error = e.Error.Message; 
        else if (e.Cancelled) 
         error = "Cancelled"; 

        if (!string.IsNullOrEmpty(error)) 
        { 
         await DisplayAlert("Error", error, "OK", "Cancel"); **//error => "Object reference not set an instance of an object"** 
        } 
        else 
      `enter code here`  { 

       test.Text = e.Result; 
       } 
      }); 
     } 
    } 

你能帮我吗? :) 谢谢

+0

我还没有调查过这一点,但你总是可以手动执行http请求。看看这个:http://stackoverflow.com/a/4015346/1845593 – user1845593

+1

你可以做的另一件事是通过Fiddler发送请求并检查来自服务器的错误,或者如果你正在访问服务器 – user1845593

回答

0

由于目标方法是一个事件处理程序,您可以利用异步事件处理程序将事件arg e保持在范围内。

private async void Ws_HelloCompleted(object sender, Please.HelloCompletedEventArgs e) { 
    string error = null; 
    if (e.Error != null) 
     error = e.Error.Message; 
    else if (e.Cancelled) 
     error = "Cancelled"; 

    if (!string.IsNullOrEmpty(error)) { 
     await DisplayAlert("Error", error, "OK", "Cancel"); 
    } else { 
     test.Text = e.Result; 
    } 
}