获取webservice异步函数的值



我有一个简单的asp.net webservice,它有一个简单的异步函数,像这样:

public class TestService : System.Web.Services.WebService
{
[WebMethod]
public async Task<string> HelloWorld()
{
await Task.Delay(TimeSpan.FromSeconds(2));
return "Hello World";
}
}

,我想得到它的结果在我的asp.net webforms应用程序,像这样:

public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(GetFullName));
}
async Task<string> GetFullName()
{
var client = new TestService.TestServiceSoapClient();
return await client.HelloWorldAsync();
}
}

但是我得到错误:

CS0029  Cannot implicitly convert type 'digital_sig_webapp.TestService.HelloWorldResponse' to 'string'

我期望这里的结果类型是字符串,那么发生了什么?我怎样才能从中获得价值呢?

您要查找的是HelloWorldResponse的一个字段。名称应该是HelloWorldResult。所以你的代码可以是这样的(未测试):

async Task<string> GetFullName()
{
var client = new TestService.TestServiceSoapClient();
var response = await client.HelloWorldAsync();
return response.HelloWorldResult;
}

最新更新