由于某种原因,我无法获得生成的[服务方法名称]任何方法的异步版本,以便在我在VB.NET中创建的Web服务中进行编译。
无论我是使用我创建的实际服务,还是使用HelloWorld和HelloWorldAsync方法的默认服务,我都会得到相同格式的错误消息。所以我显然没有做一些必要的关键。
VS 2012代码窗口中的错误消息格式为[Service MethodName]响应无法转换为[将返回的类型]。因此,对于默认的HelloWorld方法,此代码段: 导入StackOverflowClient.TestServiceReference
Public Class Form1 昏暗的SOClient作为新的TestWebServiceSoapClient
Private Async Sub SayHelloAsync()
Label1.Text = Await SOClient.HelloWorldAsync()
End Sub
结束班
(其中StackOverflowClient是项目的名称,TestServiceReference是分配给Service的Namespace,SOClient是代理类)将错误输出消息:HelloWorldResponse不能转换为String。 (在我的实际应用程序中,消息将是GetUserResponse无法转换为我在服务中创建的用户类型。
当我尝试使用服务中的类执行此操作时,我有时也会出现“Expression not not a value”的错误消息,例如: lblUser.Text = StaffInfoService.GetNextStaffMemberAsync()
我在“服务参考设置”中选中了“允许生成异步操作”复选框。
我看不出我错过了什么。除非我绝对必须,否则我不想使用VS2010之前的旧的Begin / Completed / Callback方法。任何使用Async / Await执行此任务的指针都将非常感激。
答案 0 :(得分:0)
听起来HelloWorldAsync
正在返回Task<HelloWorldResponse>
类型。当你Await
时,任务是&#34;解开&#34;然后值的类型为HelloWorldResponse
。如错误消息所述,您无法将其转换为字符串。也许你正在寻找那种类型的特定属性?