向SOAP服务添加服务引用不会生成异步方法

时间:2013-05-05 07:36:58

标签: c# wcf soap windows-store-apps wcf-client

在metro风格的应用程序中我想添加服务引用(wikispaces)。 VS2012正确发现服务: Adding service reference

不幸的是,生成的 Reference.cs 不提供服务中的任何方法: Object Browser

为什么会这样?这项服务不兼容吗?我该如何访问服务?

编辑: 它是metro风格的应用程序,因此应生成 async 方法。但它们并没有产生。

4 个答案:

答案 0 :(得分:0)

我尝试了一些,但似乎不可能让它生成异步方法。找不到确切的原因。也许它与WSDL有关。

无论如何,既然你不拥有这项服务,我只能想到一种方法。在它前面创建自己的中间WCF 4.5服务并从应用程序中使用它。

这样可行,因为:

  • 为wikipages服务生成代理可以从完整的框架项目中工作,因此它可以在WCF项目中运行。您可以在Windows服务中托管您的服务。
  • 似乎在Windows应用商店应用中生成代理适用于WCF服务。 Example here

我还想过为一个完整的框架项目生成wikipages代理,然后将其移动到你的Win8客户端,但这需要纠正很多生成的代码,以便进行编译(至少)。 / p>

答案 1 :(得分:0)

您是以管理员还是普通用户身份运行VS?我有类似的问题,并在添加服务引用解决后运行VS作为管理员。

答案 2 :(得分:0)

我对VS2012和WikiSpaces有同样的问题。我不知道究竟有什么问题,但是如果你build these services from the command line它就可以了。

如果您使用Messages(Comments)API,那么您将遇到WikiSpaces的第二个问题。他们在WSDL中搞砸了一些类型,不小心将body和html成员设置为int而不是string。你想要编辑WSDL并从中构建,或者(更快)编辑从WSDL生成的MessageService.cs,并确保body和html是字符串而不是整数(然后重新编译它)!

答案 3 :(得分:0)

pwas,在cmd.exe中尝试此命令

C:\Program Files (x86)\Microsoft Visual Studio 12.0>wsdl /out:C:\wiki.cs  http://www.wikispaces.com/page/api?wsdl"