添加服务引用不会生成代理

时间:2011-12-07 20:59:03

标签: wcf visual-studio-2010 proxy

我知道还有其他类似问题,但我找不到工作回复。

我从模板[GetData()和GetDataUsingDataContract()]附带创建默认WCF服务。
它在浏览器中运行良好。

我有一个单独的网站,我添加了这个新的WCF服务:

我做'添加服务参考',输入我的网址,服务出现,然后点击'确定'添加它。
在'App_WebReferences'下,我看到了我添加的服务的命名空间:'ServiceReference1',其下有'References.svcmap',还有一些.svcinfo / .wsdl / .xsd文件。

没有创建代理文件,但是<system.serviceModel>元素已添加到我的web.config中,其中包含正确的信息。

但是,如果没有代理,我无法访问/调用我服务中的任何方法(即ServiceReference1.WCFMethod1()

我可以调用svcutil,生成代理,将其添加到我的App_Code,一切正常。
我的问题是,为什么我的代理不是使用“添加服务引用”创建的? 一切都在目标框架下:.NET Framework 4。

修改

刚刚创建了一个Console App并添加了服务引用,它创建了代理。 所以问题是我的网站没有创建代理......

3 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,发现在所有引用的程序集中取消选中重用类型确实解决了这个问题。但是,就我而言,我需要它来重用我引用的一些库中的类型。我发现this post,涵盖了一个非常类似的问题。在该帖子中,它引用了Microsoft knowledge-base article,其中描述了针对以下问题的修复:

  

考虑以下情况:

     
      
  • 您在Visual Studio 2012中创建了一个ASP.NET MVC4 Web API项目。
  •   
  • 您在项目中添加WCF服务引用。
  •   
     

在此方案中,服务引用的Reference.cs文件为空。

     

<强>原因

     

出现此问题是因为DataContractSerializer类遇到了不支持的类型(Newtonsoft.Json.Linq.JToken)。在这种情况下,它会抛出异常,然后停止生成服务引用。

我没有引用那个JSON库,但是,基于该bug描述,我推测我的一个引用的库必定有类似的问题。我认为我引用的其中一个库可能包含DataContractSerializer不支持的类型,它抛出相同类型的异常,因此它以相同的方式失败。

果然,我发现,在我的情况下,罪魁祸首是我自己的一个库,它恰好包含了同一个WCF服务的公共代理。我怀疑这是导致麻烦的公共代理。在任何情况下,通过选择在指定的引用程序集中重用类型,然后选择除之外的所有程序集,服务引用会自动正确生成代理类。

答案 1 :(得分:3)

添加ServiceReference时:参考 - &gt;添加新的服务参考。 点击高级按钮并取消选中&#34;重复使用所有引用程序集中的类型&#34;。 此选项有时会导致错误。

答案 2 :(得分:3)

这是主要问题。 问题来源是当您无法在Visual Studio中找到“添加Web引用”时。如果服务是asmx,在我的情况下,在我找到这些步骤之前它还没有生成代理类 - &gt;点击Sercice参考 - &gt;点击高级 - &gt;在那里,您将看到添加Web引用...提供您的服务URL命中确定问题已解决。 希望这会有所帮助。