你可以在Windows Phone 7上使用WCF服务吗?

Wil*_*ill 8 .net c# silverlight wcf windows-phone-7

我只能在网上找到几个人提到这一点,对他们来说似乎就像添加服务参考一样简单.

但是,当我尝试为我的WCF服务添加服务引用时(它在常规控制台应用程序中正常工作,因此我已将WCF排除为问题)我收到了许多错误.

  • 警告5自定义工具警告:未找到与Silverlight 3兼容的端点.除非通过构造函数提供端点信息,否则生成的客户端类将不可用.
  • 警告6自定义工具警告:调用目标已抛出异常.
  • 警告2自定义工具警告:无法导入wsdl:portType详细信息:运行WSDL导入扩展时引发了异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter
  • 错误:无法从程序集'System.Runtime.Serialization,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'加载类型'System.Runtime.Serialization.DataContractSet'.
  • 警告4自定义工具警告:无法导入wsdl:port详细信息:导入wsdl:port依赖的wsdl:binding时出错.
  • 警告3自定义工具警告:无法导入wsdl:binding详细信息:导入wsdl:binding依赖的wsdl:portType时出错.
  • 错误7自定义工具错误:无法为服务引用"ServiceReference"生成代码.有关详细信息,请查看其他错误和警告消息.

我发现第一个错误提到了Silverlight 3,我觉得很奇怪,因为我刚刚完全卸载并重新安装了所有的开发工具,以确保我使用的是最新版本的.NET和Silverlight.

如果我尝试创建一个新的Silverlight项目并且不选中"启用WCF RIA服务"框,则这些错误看起来与我看到的类似.如果这确实是问题,我无法找到任何方法来为WP7启用它.

学术绅士(和女士们)的任何帮助将不胜感激.

小智 7

嗯,我刚刚通过取消"重用类型......"框来更改服务引用配置,然后更新工作并生成服务配置文件.不确定这对你有帮助吗?


avi*_*tor 7

请记住,Silverlight - 即使对于使用Silverlight 3专用版本的Windows Phone - 也不适用于所有WCF服务绑定/端点,而是仅支持一个子集(例如,不包括WS-HTTP绑定).您最简单的赌注是使用Visual Studio中的"支持Silverlight的WCF服务"模板(在Add/New Item/Silverlight下)为Silverlight应用程序创建WCF服务.

此博客文章(http://blogs.msdn.com/b/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx)来自Silverlight WCF团队博客应该对可能性有所了解.你可能想看看他整个博客(http://blogs.msdn.com/b/silverlightws/),因为它有一些有趣的how-to和gotcha文章.


Jac*_*hea 7

我遇到了完全相同的错误,并将集合类型更改为System.Collections.Generic.List而不是System.Collections.ObjectModel.ObservableCollections.这很奇怪,因为我甚至没有勾选"始终生成消息合同"的方框.

希望有所帮助.


小智 0

是的,这是一个奇怪的错误。您将能够返回字符串、整数等,但任何其他类型(如 ArrayList 等)您都会收到此错误。

你的代码没有任何问题,只是 VS 有一个错误。Microsoft 已修复此问题(检查服务包),但如果您正在为 Windows Phone 7 进行编程,则该错误仍然存​​在。

您已删除服务,然后删除 Bin 和 Obj 文件夹。保存并关闭VS。然后重新启动项目,添加服务引用(不要调试/运行应用程序)。哦,是的,首先进行备份。应该没问题。每次更新服务时,您可能都必须重复此过程。

这应该可以解决问题,如果没有,您可能必须打开一个新项目,或者如果可能的话重新创建 Web 服务。