ASMX Webservice没有asyc BEGIN .. END选项

时间:2017-01-30 16:54:17

标签: web-services xamarin xamarin.forms asmx

我目前正在通过示例了解如何在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)

我做错了什么?如果我只是删除网络服务并再次添加它,我还需要做什么? 非常感谢!!

1 个答案:

答案 0 :(得分:0)

如果我们不添加此项以将参考菜单添加到我们的项目中,则无法访问Web服务。

  

尝试右键单击您的项目参考&gt;添加网络参考&gt;输入   .asmx的网址