2017-01-30 5 views
0

Ich bin gerade durch das Beispiel, wie man ASMX Webservices von Xamarin Forms bei https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/ zu gehen. Ich habe den Text gelesen und das Beispiel überprüft. Ich habe versucht, die gleiche Struktur mit meinem eigenen Webservice aufzubauen, aber leider funktioniert das nicht.ASMX Webservice hat keine Asyc BEGIN .. ENDE Optionen

Das Problem ist: Im Beispiel gibt es Methoden wie "todoService.BeginGetTodoItems" und "todoService.EndGetTodoItems", aber in meinen Webservices existieren sie nicht. Ich habe nur z.B. "Login", aber ich habe nicht "BeginLogin" und "EndLogin".

So könnte ich es sync nennen (was gut funktioniert), aber nicht asynchron.

Wie kann ich die Anfangs- und Endmethoden erstellen?

Vielen Dank!

Update: Nur zur Verdeutlichung: In Reference.cs von ASMXService von TodoASMX Sample App gibt es diese Methoden enthalten, z. für GetTodoItems:

public TodoItem[] GetTodoItems() 
public System.IAsyncResult BeginGetTodoItems(System.AsyncCallback callback, object asyncState) 
public TodoItem[] EndGetTodoItems(System.IAsyncResult asyncResult) 
public void GetTodoItemsAsync() 
public void GetTodoItemsAsync(object userState) 
private void OnGetTodoItemsCompleted(object arg) 

Aber in meinem eigenen ASMX Webservice sind nur diese Methoden verfügbar, z. für die Standard Hello World:

public string HelloWorld() 
public void HelloWorldAsync() 
public void HelloWorldAsync(object userState) 
private void OnHelloWorldOperationCompleted(object arg) 

Sie sehen also, BeginHelloWorld und EndHelloWorld fehlen ...

Update2: Problem wiederholbar ist leicht: Laden Sie das Beispiel nach Artikel https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/ bei https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX. Es funktioniert gut. Löschen Sie nun die Webreference ASMXService von iOS Project und fügen Sie sie manuell erneut hinzu. URL ist http://todoasmxservice.azurewebsites.net/TodoService.asmx und Typ sollte ".NET 2.0-Webdienste" sein, da es das ASMX-Beispiel und nicht das WCF-Beispiel ist. Jetzt bekomme ich folgende Fehlermeldungen, weil BEGIN und END Methoden existieren nicht mehr:

/TodoASMX/iOS/SoapService.cs(87,87): Fehler CS1061: Typ TodoASMX.iOS.ASMXService.TodoService' does not contain a definition for BeginGetTodoItems' und keine Erweiterungsmethode BeginGetTodoItems' of type TodoASMX.iOS .ASMXService.TodoService 'könnte gefunden werden. Vermissen Sie eine Baugruppenreferenz? (CS1061) (TodoASMX.iOS)

Was mache ich falsch? Was muss ich zusätzlich tun, wenn ich die Webservices einfach entferne und neu hinzufüge? Vielen Dank !!

Antwort

0

Der Web Service konnte nicht erreicht werden, wenn wir dies nicht hinzufügen, um ein Referenzmenü zu unserem Projekt hinzuzufügen.

Versuchen Sie Ihr Projekt Verweise auf Rechtsklick> Web-Referenz hinzufügen> eingeben URL .asmx

+0

Sicher. Ich habe den Web-Verweis natürlich bereits zu meinem Projekt hinzugefügt. Wie gesagt, ohne ASYNC funktioniert es gut. Aber ich möchte es natürlich async nennen. Daher brauche ich diese "todoService.BeginGetTodoItems" und "todoService.EndGetTodoItems", aber ich habe sie nicht. Ich habe nur "myService.Login" aber keine "myService.BeginLogin" noch "myService.EndLogin". – K232

Verwandte Themen