2015-04-29 37 views
7

'da SOAP web hizmetinden liste alırken, çeşitli bilgileri aldığım bir SOAP web hizmetim var. Çoğu işlev doğru şekilde çalışıyor, ancak bir List döndürmek için bazı işlevlere ihtiyacım var. WebMethodTargetInvocationException Azure

gibi tanımlanır:

web hizmeti ana projede başvuruda bulunulan ve tarafından çağrılan
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; 
} 

:

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

: olarak tanımlanır

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

client_GetAllMyTypesCompletedTargetInvocationException'un atıldığı yer burası. Result ile ilgili olarak. Web servisini kendi başınıza çalıştırırsanız, doğru veriler döndürülür.

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; 
} 

Öyleyse neden bu hata görüyorum: Referans olarak GLS_DataQuery olarak tanımlanır? Ya da bu örnekte nesnelerin bir listesini nasıl iade etmeliyim?

Web hizmetinin Azure'da barındırılmasının önemi olabilir.

DÜZENLEME: Hata ayıklayıcısını Azure'da çalışan web hizmeti örneğine eklemek, doğru verileri döndürdüğünü görür. Hata, web hizmetini çağıran bir Xamarin telefon uygulamasında atılır. hatanın "Mesaj" sadece boş bir referans hatası ve yığın izidir: MyApp.MyService.Service1SoapClient.OnEndGetAllMyTypes de MyApp.MyService.Service1SoapClient.EndGetAllMyTypes (ıasyncresult sonuç) olarak

(ıasyncresult System.ServiceModel.ClientBase`1.OnAsyncCallCompleted (IAsyncResult sonuç)

+0

Lütfen istisna mesajını, özellikle de iç istisnayı gönderin. – Alex

+0

İç istisna sadece bir 'NullReferenceException'. – anothershrubery

cevap

2

de sonuç) Böylece web s Web.config, protokollere HttpGet ve HttpPost eklemem gerekiyor çıkıyor ervice.

<system.web> 
    <webServices> 
     <protocols> 
      <add name="HttpSoap"/> 
      <add name="HttpPost"/> 
      <add name="HttpGet"/> 
      <add name="Documentation"/> 
     </protocols> 
    </webServices> 
</system.web>