C# 在C语言中访问异步Web服务方法#

C# 在C语言中访问异步Web服务方法#,c#,web-services,windows-phone-7,C#,Web Services,Windows Phone 7,我试图非常简单地对web服务方法进行异步调用并获取返回值。我在VisualStudio2010中使用它的服务引用代理类特性来实现这一点。奇怪的是,这方面的资源很少,而且大部分都过时了,使用Begin[Method]和End[Method],而不是[Method]Async和[Method]Completed 我正在尝试遵循以下步骤:。当引发表示该方法已返回的事件时,我总是得到null的结果 MyWebServiceClient client = new MyWebServiceClient();

我试图非常简单地对web服务方法进行异步调用并获取返回值。我在VisualStudio2010中使用它的服务引用代理类特性来实现这一点。奇怪的是,这方面的资源很少,而且大部分都过时了,使用Begin[Method]和End[Method],而不是[Method]Async和[Method]Completed

我正在尝试遵循以下步骤:。当引发表示该方法已返回的事件时,我总是得到null的结果

MyWebServiceClient client = new MyWebServiceClient();
client.webMethodCompleted += 
    new System.EventHandler<webMethodCompletedArgs>(Callback);
client.webMethodAsync();

问题是,如果我运行此代码,
args.Result
将始终为
null
。我已经使用一个同步接口测试了web服务,它工作得很好,所以我知道它不是web服务。我是新手,所以我可能做错了一些非常简单的事情。

如果args.Result为null,则args.Error属性应填充发生的异常。

我不知道WinPhone开发,但您正在使用旧的ASMX技术访问服务(Web引用)。您应该尝试使用服务引用。谢谢您的回复,John。我最初是通过VisualStudio中的“服务引用”文件夹添加服务的。我在任何地方都没有看到“Web参考”文件夹。是否有我遗漏的东西,或者在添加引用时不使用ASMX技术时我应该做的事情?是的,您应该简单地使用“添加服务引用”并完全忽略web引用。这就是我所做的。从来没有任何网络参考资料,除非我遗漏了什么。好吧,也许我把你弄糊涂了。您发布的链接指向一篇关于使用web引用的.NET2.0文章。在正常操作下,如果Cancelled为false,Error为null,那么结果应该包含操作的结果。服务是否可能成功返回,但返回的值为空?这是可能的,但可能性很小。当我使用同步版本时,它工作正常并返回它应该返回的内容(不为空)。因为您是通过电话发送的,所以请求可能有所不同。
void Callback(object sender, webMethodCompletedArgs args)
{
    string data = args.Result;
}