【发布时间】:2017-06-15 22:15:26
【问题描述】:
我目前正在通过示例如何在 https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/ 上使用 Xamarin Forms 中的 ASMX Web 服务。我阅读了文本并检查了示例。我尝试使用自己的网络服务构建相同的结构,但不幸的是这不起作用。
问题是:虽然在示例中有“todoService.BeginGetTodoItems”和“todoService.EndGetTodoItems”等方法,但在我的网络服务中它们不存在。我只有例如“登录”,但我没有“BeginLogin”和“EndLogin”。
所以我可以称它为同步(可以正常工作)但不是异步。
我如何获取/创建开始和结束方法?
非常感谢!
更新:澄清一下:在 TodoASMX 示例应用程序的 ASMXService 的 Reference.cs 中,包含这些方法,例如对于 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 Web 服务中,只有这些方法可用,例如对于默认的 HelloWorld:
public string HelloWorld()
public void HelloWorldAsync()
public void HelloWorldAsync(object userState)
private void OnHelloWorldOperationCompleted(object arg)
所以你看,BeginHelloWorld 和 EndHelloWorld 不见了......
Update2:问题很容易重复:在https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX 下载文章https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/ 提供的示例。它工作正常。现在从 iOS 项目中删除 webreference ASMXService 并再次手动添加它。 URL 是http://todoasmxservice.azurewebsites.net/TodoService.asmx,类型应该是“.NET 2.0 Web Services”,因为它是 ASMX 示例,而不是 WCF 示例。现在我收到以下错误消息,因为 BEGIN 和 END 方法不再存在:
/TodoASMX/iOS/SoapService.cs(87,87):错误 CS1061:类型 TodoASMX.iOS.ASMXService.TodoService' does not contain a definition forBeginGetTodoItems' 并且找不到扩展方法 BeginGetTodoItems' of typeTodoASMX.iOS.ASMXService.TodoService'。您是否缺少程序集参考? (CS1061) (TodoASMX.iOS)
我做错了什么?如果我只是删除网络服务并再次添加它,我还需要做什么? 非常感谢!!
【问题讨论】:
标签: web-services xamarin xamarin.forms asmx