服务参考错误:无法为服务参考生成代码

我有一个Windows服务解决方案,并试图在VS2010中为Hermes(Opensource ebms消息服务器)Web服务添加服务引用。

我可以使用它的URL找到Web服务,但是当我尝试填充服务引用时,我在Visual Studio中收到以下错误:

Error 8 Custom tool error: Failed to generate code for the service reference 'testService'.  Please check other error and warning messages for details. C:UsersAdmindocumentsvisual studio 2010ProjectsMyProjectMyProject.MessageHandlerService ReferencestestServiceReference.svcmap 1 1 MyProject.MessageHandler


Warning 6 Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery'] C:UsersAdmindocumentsvisual studio 2010ProjectsMyProjectMyProject.MessageHandlerService ReferencestestServiceReference.svcmap 1 1 MyProject.MessageHandler

Warning 7 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:service[@name='EbmsMessageStatusQuery']/wsdl:port[@name='EbmsStatusQuery'] C:UsersAdmindocumentsvisual studio 2010ProjectsMyProjectMyProject.MessageHandlerService ReferencestestServiceReference.svcmap 1 1 MyProject.MessageHandler

Warning 5 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Schema with target namespace 'http://service.ebms.edi.cecid.hku.hk/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery'] C:UsersAdmindocumentsvisual studio 2010ProjectsMyProjectMyProject.MessageHandlerService ReferencestestServiceReference.svcmap 1 1 MyProject.MessageHandler

一些调查似乎表明,这是由于svcutil.exe由于没有对目录的权限(可能是c: windows temp)而无法构建代理。 我曾尝试分配各种访问权限,但我不确定哪个用户需要该权限,或者它是否只是一个红色鲱鱼。

任何想法将不胜感激。

谢谢


必须从配置服务引用选项中取消选中所有引用的程序集中的重用类型

查看详情


右键单击您的服务参考并选择Configure Service Reference...

配置服务参考

然后取消选中Reuse types in referenced assemblies

重用类型

单击OK ,清理并重建您的解决方案。


尝试从使用Visual Studio 2012的ASP .Net MVC 4.0项目为Web服务生成客户端时,我也遇到了类似的错误。

问题的根源似乎是这样一个事实,即我试图生成客户端的项目引用了一个程序集,而程序集又依赖于另一个未被引用的程序集。

在服务配置中启用“在引用的程序集中重用类型”时,服务生成器可能会检查所有引用的程序集以获取可重用的类型列表。 其中一个引用的程序集引用另一个不可用的程序集的事实可能导致生成器失败。

从服务配置中取消选中“在引用程序集中重用类型” 将解决上述问题 ,但会产生副作用。 重用类型选项是有原因的 ,在某些情况下,它避免了在使用该服务的代码中不必要的强制转换。

例如,如果服务本身是使用WCF构建的,并且其中的某些方法参数的类型为System.Guid,则在重用类型选项被禁用时,它们将被转换为生成的客户端中的字符串。

我更喜欢禁用重用类型的另一种方法是从专门为此目的创建的类库项目添加服务引用。 要记住的一件事是将所有与服务相关的配置从类库的app.config复制到启动项目的配置文件中。

如果在本地程序集中定义了需要在服务客户机中重用的类型,则只需从上述类库项目中引用那些程序集及其所有依赖项即可。

链接地址: http://www.djcxy.com/p/90107.html

上一篇: Service Reference Error: Failed to generate code for the service reference

下一篇: Running a .NET app in Linux in 2015