我目前正在通过示例了解如何在https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/使用Xamarin Forms中的ASMX Web服务。我阅读了文本并检查了示例。我尝试使用自己的web服务构建相同的结构,但不幸的是,这不起作用。
问题是:虽然在示例中有类似“todoService.BeginGetTodoItems”和“todoService.EndGetTodoItems”的方法但在我的web服务中它们不存在。我只有... “登录”,但我没有“BeginLogin”和“EndLogin”。
所以我可以称之为同步(工作正常)但不是异步。
我怎样才能获得/创建开始和结束方法?
非常感谢!
更新:只是为了澄清:在TodoASMX Sample App的ASMXService的Reference.cs中,包括这些方法,例如: for GetTodoItems:
#include <stdio.h>
#include <stdlib.h>
#define CHUNK 512
int main () {
FILE *inputFile;
FILE *outputFile;
unsigned char *buffer;
size_t nread;
buffer = malloc(CHUNK);
if (!buffer) exit(1);
inputFile = fopen("input.txt", "rb");
outputFile = fopen("output.txt", "wb");
if (!inputFile || !outputFile) exit(2);
while ((nread = fread(buffer, 1, CHUNK, inputFile)) > 0)
fwrite(buffer, 1, nread, outputFile);
if (ferror(inputFile) || ferror(outputFile)) exit(3);
free(buffer);
fclose(inputFile);
fclose(outputFile);
return 0;
}
但在我自己的ASMX Webserivce中,只有这些方法可用,例如对于默认的HelloWorld:
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)
所以你看,BeginHelloWorld和EndHelloWorld都不见了......
Update2:问题可以轻松重复:在https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx/下载文章https://developer.xamarin.com/samples/xamarin-forms/WebServices/TodoASMX提供的示例。它工作正常。现在从iOS Project中删除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:键入public string HelloWorld()
public void HelloWorldAsync()
public void HelloWorldAsync(object userState)
private void OnHelloWorldOperationCompleted(object arg)
BeginGetTodoItems',找不到扩展方法TodoASMX.iOS.ASMXService.TodoService' does not contain a definition for
TodoASMX.iOS.ASMXService.TodoService'。你错过了装配参考吗? (CS1061)(TodoASMX.iOS)
我做错了什么?如果我只是删除网络服务并再次添加它,我还需要做什么? 非常感谢!!
答案 0 :(得分:0)
如果我们不添加此项以将参考菜单添加到我们的项目中,则无法访问Web服务。
尝试右键单击您的项目参考&gt;添加网络参考&gt;输入 .asmx的网址