2017-01-30 9 views
0

В настоящее время я просматриваю пример использования веб-сервисов ASMX от Xamarin Forms по адресу https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/. Я прочитал текст и проверил пример. Я попытался построить ту же структуру, используя мой собственный веб-сервис, но, к сожалению, это не работает.ASMX Webservice не имеет asyc BEGIN .. END options

Проблема заключается в том, что в примере существуют такие методы, как «todoService.BeginGetTodoItems» и «todoService.EndGetTodoItems», но в моих веб-сервисах их не существует. У меня только, например. «Вход», но у меня нет «BeginLogin» и «EndLogin».

Так что я мог бы назвать его синхронизацией (которая работает нормально), но не асинхронно.

Как я мог получить/создать методы начала и конца?

Большое спасибо!

Обновление: Просто уточнить: В Reference.cs ASMXService примера приложения TodoASMX включены эти методы, например. для 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) 

Но в моей ASMX Webserivce, только эти методы доступны, например, для HelloWorld по умолчанию:

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

Таким образом, вы видите, BeginHelloWorld и EndHelloWorld отсутствуют ...

Update2: Проблема повторяется легко: Загрузите пример, приведенный в статье https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/ на https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX. Он работает нормально. Теперь удалите веб-версию ASMXService из iOS Project и вручную добавьте ее снова. URL-адрес: http://todoasmxservice.azurewebsites.net/TodoService.asmx, а тип должен быть «.NET 2.0 Web Services», потому что это образец ASMX, а не образец WCF. Теперь я получаю следующие сообщения об ошибках, так как НАЧАТЬ и методы END уже не существует:

/TodoASMX/iOS/SoapService.cs(87,87): CS1061 Ошибка: Тип TodoASMX.iOS.ASMXService.TodoService' does not contain a definition for BeginGetTodoItems' и не метод расширения BeginGetTodoItems' of type TodoASMX.iOS .ASMXService.TodoService '. Вам не хватает ссылки на сборку? (CS1061) (TodoASMX.iOS)

Что я делаю неправильно? Что мне нужно сделать дополнительно, если я просто удалю веб-службы и добавлю их снова? Большое спасибо!

ответ

0

Веб-служба не может быть доступна, если мы не добавим это, чтобы добавить ссылку в наш проект.

Попробуйте щелкнуть правой кнопкой ссылки на проекты> Добавить веб-ссылки> введите Адрес .asmx

+0

Sure. Конечно, я уже добавил веб-ссылку на свой проект. Как сказано, без ASYNC он отлично работает. Но, конечно, я хочу назвать это асинхронным. Поэтому мне нужны эти «todoService.BeginGetTodoItems» и «todoService.EndGetTodoItems», но у меня их нет. У меня просто «myService.Login», но нет «myService.BeginLogin» или «myService.EndLogin». – K232