【发布时间】:2012-08-03 21:34:12
【问题描述】:
我正在尝试非常简单地对 Web 服务方法进行异步调用并获取返回值。我在 Visual Studio 2010 中使用它的服务引用代理类功能来执行此操作。奇怪的是,这方面的资源少之又少,而且大部分都已经过时,使用 Begin[Method] 和 End[Method] 而不是 [Method]Async 和 [Method]Completed。
我正在尝试关注这个:http://msdn.microsoft.com/en-us/library/55xs7d7f(v=vs.80).aspx。当引发表示方法已返回的事件时,我总是得到 null 结果。
MyWebServiceClient client = new MyWebServiceClient();
client.webMethodCompleted +=
new System.EventHandler<webMethodCompletedArgs>(Callback);
client.webMethodAsync();
在代码后面,Callback 方法:
void Callback(object sender, webMethodCompletedArgs args)
{
string data = args.Result;
}
问题是,如果我运行这段代码,args.Result 将永远是null。我已经使用同步接口测试了 Web 服务,它工作得很好,所以我知道它不是 Web 服务。我是这个东西的新手,所以我可能做错了一些非常简单的事情。
【问题讨论】:
-
我不懂 WinPhone 开发,但是您使用的是旧的 ASMX 技术来访问服务(Web 参考)。您应该尝试改用服务引用。
-
感谢您的回复,约翰。我最初是通过 Visual Studio 中的“服务引用”文件夹添加服务的。我在任何地方都没有看到“Web References”文件夹。在添加不使用 ASMX 技术的引用时,我是否遗漏了什么,或者我应该做些什么?
-
是的,您应该简单地使用“添加服务引用”并完全忽略网络引用。
-
我就是这么做的。从来没有任何网络参考,除非我错过了什么。
-
好吧,也许我把你弄糊涂了。您发布的链接是关于使用 Web 引用的 .NET 2.0 文章。你不应该注意那篇文章中的内容。
标签: c# web-services windows-phone-7