2015-04-29 17 views
7

Mam usługę sieciową SOAP, od której pobieram różne informacje. Większość funkcji działa poprawnie, ale potrzebuję funkcji zwracania wartości List.TargetInvocation wyjątek przy pobieraniu listy z usługi sieciowej SOAP na Azure

WebMethod jest zdefiniowany następująco:

List<MyType> myTypes = new List<MyTypes>(); 

[WebMethod] 
public List<MyType> GetAllMyTypes() 
{ 
    string sql = "SELECT * FROM MyType"; 
    DataTable dt = new DataTable(); 
    dt = Globals.GLS_DataQuery(sql); 

    List<MyType> myType = new List<MyType>(); 
    foreach (DataRow row in dt.Rows) 
    { 
     MyType myType = new MyType() 
     { 
      ID = (int)row["Id"] 
     }; 

     myTypes.Add(myType); 
    } 

    return myTypes; 
} 

Usługa internetowa jest określany w głównym projektu jest nazywany przez:

client.GetAllMyTypesCompleted += client_GetAllMyTypesCompleted; 
client.GetAllMyTypesAsync(); 

client_GetAllMyTypesCompleted jest zdefiniowany jako:

private void client_GetAllMyTypesCompleted(object sender, GetAllMyTypesCompletedEventArgs e) 
{ 
    var collection = e.Result; 
} 

To tutaj wyrzucono TargetInvocationException, specifica Lly dotyczące Result. Jeśli uruchomisz usługę sieciową samodzielnie, zwrócone zostaną poprawne dane. Dla porównania GLS_DataQuery jest zdefiniowany jako:

public static DataTable GLS_DataQuery(string sql) 
{ 
    DataTable dt = new DataTable 
    SqlCommand command = new SqlCommand(sql, connection); 
    SqlDataAdapter adapter = new SqlDataAdapter(command); 
    adapter.Fill(dt); 

    return dt; 
} 

Dlaczego widzę ten błąd? Lub w jaki sposób powinienem zwrócić listę obiektów w tym przypadku?

Może być istotne, że usługa internetowa jest hostowana na Azure.

EDYCJA: Dołączenie debugera do wystąpienia usługi sieci Web działającej na platformie Azure powoduje, że zwraca poprawne dane. Błąd jest zgłaszany w aplikacji telefonu Xamarin, która wywołuje usługę sieci Web. „Message” błędu jest po prostu zerowa błąd odniesienia i ślad stosu jest:

na MyApp.MyService.Service1SoapClient.EndGetAllMyTypes IAsyncResult (wynik) w MyApp.MyService.Service1SoapClient.OnEndGetAllMyTypes (IAsyncResult wynik) w System.ServiceModel.ClientBase`1.OnAsyncCallCompleted IAsyncResult (wynik)

+0

Proszę opublikować komunikat wyjątku, w szczególności wewnętrzny wyjątek. – Alex

+0

Wewnętrzny wyjątek jest po prostu 'NullReferenceException'. – anothershrubery

Odpowiedz

2

więc okazuje się, trzeba dodać HttpGet i HttpPost do protokołów w pliku web.config w internetowej s ervice.