【问题标题】:Can't use service reference in ASP.NET project无法在 ASP.NET 项目中使用服务引用
【发布时间】:2012-08-29 09:03:38
【问题描述】:

我成功地将 WCF 服务引用添加到我的 ASP.NET 项目,但我无法使用它。
我无法通过using MyProject.MyService 导入服务引用。

这在标准的 Windows 窗体项目中有效,而我现在,请求的服务正在运行。

感谢您的帮助。

编辑: 服务客户端生成过程中出现警告
我认为“主要”警告如下

Warning 1   Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Type 'Newtonsoft.Json.Linq.JToken' is a recursive collection data contract which is not supported. Consider modifying the definition of collection 'Newtonsoft.Json.Linq.JToken' to remove references to itself.

此警告仅在 ASP.NET 项目的生成中出现。这一代在我的其他项目中工作。

看来这是我不负责的班级的问题。我是否必须更改服务引用创建的设置或避免原始 WCF 服务类中的某些导入?

【问题讨论】:

  • 您是否更改了服务引用的名称?如果没有,默认引用将类似于 ServiceReference.MyService
  • 您可以点击在解决方案资源管理器中显示所有文件,深入到服务参考,直到您找到 Reference.cs 并检查命名空间。
  • 是的,我改变了它。我尝试导入 MyProject.MyServiceReference,然后使用服务参考中的服务。

标签: c# asp.net-mvc wcf


【解决方案1】:

我们需要更多信息才能为您解决此问题。是否添加了引用但您不能使用它?

我建议查看 reference.cs 文件(在服务参考下,您可能需要告诉解决方案资源管理器显示所有文件 - 顶部的文件夹和文件的小图标)并查看它已生成的命名空间与。

我认为您可能只是没有使用正确的命名空间来引用客户端。

另一种可能性:检查任何编译器警告,它们可能会为您提供有关正在发生的事情的线索。

编辑:这似乎是其他人遇到的问题。你有安装 json.net 包吗?

详情请看以下内容:

Getting "Recursive collection data contract" when referencing a WCF service with a slightly complex method

【讨论】:

  • 服务参考已添加并列在我的项目的服务参考中。我在 reference.cs 文件中找不到任何命名空间。我应该将其更改为项目的名称空间吗?编辑:我刚刚看到reference.cs中没有代码
  • 那么问题来了,svcutil.exe好像生成服务客户端失败了。删除引用,再次添加,然后检查输出(您可能必须更改源),以检查 svcutil 生成的任何错误或警告。如果您看不到任何内容,您可能需要考虑从启用详细日志记录的命令行运行 svcutil.exe。见:msdn.microsoft.com/en-us/library/aa347733.aspx
  • 我尝试重新创建引用,但在代码生成过程中出现了几个错误。他们很想在评论中发布它们,所以我编辑了这个问题。
  • 是的,答案是在将服务引用添加到项目时,将 Newtonsoft.JSON 从“引用程序集中的重用类型”中排除。有关更多信息,请参阅linkt。谢谢山姆
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多