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)
Proszę opublikować komunikat wyjątku, w szczególności wewnętrzny wyjątek. – Alex
Wewnętrzny wyjątek jest po prostu 'NullReferenceException'. – anothershrubery