.NET生成服务引用时加载错误的程序集

时间:2014-11-05 16:42:56

标签: .net asp.net-mvc wcf

尝试在Visual Studio 2012中向ASP.NET MVC 5 Web应用程序添加服务引用时出现以下错误。我已在项目中引用了Microsoft.Owin.Security版本3.0.0.0。我还应该添加2.0.1.0版本吗?

Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Could not load file or assembly 'Microsoft.Owin.Security, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IMyService']

这个人here有类似的问题,但没有人回答..

2 个答案:

答案 0 :(得分:10)

具有完全相同的错误,并且能够通过指定要重用类型的程序集来解决它。

添加服务参考时,请点击添加服务参考窗口左下角的高级... 按钮。在显示的服务参考设置屏幕上,在数据类型部分的重新使用引用的程序集中的类型复选框下,选择重用指定引用程序集中的类型单选按钮,然后仅检查包含服务使用的类型的程序集。这应该可以解决问题。

Reuse types selection

答案 1 :(得分:0)

我知道这是一个老问题,但我在尝试引用我们公司创建的另一个服务时遇到了同样的问题,该服务使用了一些需要重复用于参考目的的程序集。

如果您不需要重复使用程序集,那么使用接受的答案就可以正常加载服务。

但是如果你确实需要重用程序集,我会设法解决这个问题。

在Visual Studio上:

  • 删除服务
  • 清洁解决方案
  • 关闭Visual Studio

在项目的文件夹中:

  • 删除包文件夹
  • 删除.vs(Visual Studio生成的文件夹)

在IIS中(如果您有权访问它)

  • 回收应用程序池(我不认为它实际上做了什么,但谁知道)

打开Visual Studio并确保您的通用程序集/程序包与您要引用的服务所使用的版本完全相同。

添加新的服务引用,并在高级窗口中选择需要重用的程序集。

点击确定并祈祷。

希望您的服务成功添加,就像我在这些步骤之后所做的那样。