【问题标题】:Adding service reference to SOAP service does not generate async methods向 SOAP 服务添加服务引用不会生成异步方法
【发布时间】:2013-05-05 07:36:57
【问题描述】:

在 Metro 风格应用中,我想添加服务参考 (wikispaces)。 VS2012 正确发现服务:

很遗憾,生成的 Reference.cs 不提供任何来自服务的方法:

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

编辑: 它是 Metro 风格的应用程序,因此应该生成 async 方法。但它们不会生成。

【问题讨论】:

  • 好的,WCF 服务代理在 Windows 应用商店应用程序中的调用和管理方式不同。见这里:msdn.microsoft.com/en-us/library/hh556233.aspx
  • 反正按照this应该会生成异步操作。
  • 用替代方法更新了我的答案。暂时还找不到原因。还是您在此期间发现了问题?
  • 很遗憾,也没有找到原因。您的替代方案听起来不错,但有一个问题 - 该项目没有为额外的 WCF 4.5 服务做好准备。我买不起专用服务器,我也没有良好的互联网连接来在家中保持服务。如果要移动代理类-我认为这不会那么容易。对于 Winrt 和完整的 4.5 框架,ServiceModel 的程序集肯定是不同的。无论如何,感谢您的努力!
  • 我明白了。没问题。但是,如果您找到原因,请不要犹豫,在这里写下一行。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    无论如何,由于您不拥有该服务,因此我只能想到一种方法。在它前面创建您自己的中间 WCF 4.5 服务并从应用程序中使用它。

    这将起作用,因为:

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

    我还考虑过为一个完整的框架项目生成 wikipages 代理,然后将其移动到您的 Win8 客户端,但这需要更正大量生成的代码才能使其编译(至少)。

    【讨论】:

    • 对象浏览器显示PagePortClient。里面没有想要的方法。
    • 我曾多次使用服务引用,我知道该怎么做。问题是 PagePoartClient 中没有服务方法
    • @pwas:你的应用使用了什么 VS 项目模板?
    • 它只是 Windows Store 应用程序。
    【解决方案3】:

    我在 VS2012 和 WikiSpaces 上遇到了同样的问题。我不知道到底出了什么问题,但如果你 build these services from the command line 就可以了。

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

    【讨论】:

    • 您好,谢谢您的回复,我已经检查过了。不幸的是,我正在完成一个项目(我已经通过 HtmlAgilityPack 解析了结果)。如果有时间,我会重构解决方案。
    【解决方案4】:

    pwas,在 cmd.exe 中试试这个命令

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 2013-04-13
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多