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

eyc*_*ych 9 wcf proxy visual-studio-2010

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

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

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

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

没有创建代理文件,但是<system.serviceModel>元素被添加到我的web.config中,看起来似乎是正确的信息.

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

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

编辑:

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

Ste*_*art 6

我有同样的问题,发现在所有引用的程序集中取消选中重用类型确实解决了这个问题.但是,就我而言,我需要它来重用我引用的一些库中的类型.我发现这篇文章,涵盖了一个非常类似的问题.在该帖子中,它引用了一篇Microsoft知识库文章,该文章描述了针对以下问题的修复:

请考虑以下情形:

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

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

原因

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

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

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


小智 4

添加 ServiceReference 时:引用 -> 添加新服务引用。单击高级按钮并取消选中“在所有引用的程序集中重用类型”。该选项有时会导致错误。