2017-05-16 78 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; 
    } 
}