来自svcutil.exe的错误消息 - 这是什么意思?

时间:2011-11-18 15:35:24

标签: wcf

我用Visual Studio创建WCF服务并不是很幸运。它在IIS中,我点击.svc文件本身的'浏览',它告诉我我已经创建了一个服务。所以我认为这一切都没关系。

在我的整个过程中,我遇到了一个使用名为svcutil.exe的程序的建议。我在我的服务上使用它并得到以下错误。我不知道这意味着什么,所以希望有人可以了解情况。

结果如下:

 Microsoft (R) Service Model Metadata Tool

[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]

Copyright (c) Microsoft Corporation.  All rights reserved.



Attempting to download metadata from 'http://localhost/EvalServiceSite/Eval.svc'

using WS-Metadata Exchange or DISCO.

Error: Cannot import wsdl:portType

Detail: An exception was thrown while running a WSDL import extension: System.Se

rviceModel.Description.DataContractSerializerMessageContractImporter

Error: Schema with target namespace 'http://tempuri.org/' could not be found.

XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/'

]/wsdl:portType[@name='IEvalService']





Error: Cannot import wsdl:binding

Detail: There was an error importing a wsdl:portType that the wsdl:binding is de

pendent on.

XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/

']/wsdl:portType[@name='IEvalService']

XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/'

]/wsdl:binding[@name='BasicHttpBinding_IEvalService']





Error: Cannot import wsdl:port

Detail: There was an error importing a wsdl:binding that the wsdl:port is depend

ent on.

XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/'

]/wsdl:binding[@name='BasicHttpBinding_IEvalService']

XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/'

]/wsdl:service[@name='EvalService']/wsdl:port[@name='BasicHttpBinding_IEvalServi

ce']





Generating files...

Warning: No code was generated.

If you were trying to generate a client, this could be because the metadata docu

ments did not contain any valid contracts or services

or because all contracts/services were discovered to exist in /reference assembl

ies. Verify that you passed all the metadata documents to the tool.



Warning: If you would like to generate data contracts from schemas make sure to

use the /dataContractOnly option.

1 个答案:

答案 0 :(得分:2)

我认为之前的Stack Overflow问题可能对您当前的问题有帮助,但不一定是您的问题。

Error: Cannot import wsdl:port with svcutil

您已经创建了自己的WCF服务,并且已经在IIS中浏览过它,因此您对它的运行情况感到高兴。 SVCUtil.exe的目的是生成可以在应用程序中与服务交互的类,以及有关合同成员和方法的编译时信息。

它执行与在visual studio中添加服务引用以使用服务完全相同的功能。

如果您遇到问题,我建议您在visual studio中创建一个简单的控制台项目,添加服务引用并为其提供您在IIS中托管的服务的URL。然后在visual studio解决方案资源管理器中单击“显示所有文件”,并查看它为您提供的reference.cs文件。这将显示您从服务中消耗了哪些信息。

修改

嗨再次,

完成下面的所有评论后,我开始看到更多关于你的问题。我认为你误解了你的行为,事实上你已经实现了你想要达到的目标。

原始项目,您使用的WCF测试客户端所做的工作就是您所需要的。它是一个完全成熟的WCF服务。您需要做的就是右键单击visual studio中的解决方案并发布它。然后,如果您确保通过发布向导在解决方案中创建IIS虚拟目录点。然后,当您运行项目然后浏览到该URL时,这将为您提供服务以供测试使用。

您目前正在做什么,创建一个WCF项目,将该DLL添加到网站项目是根本错误的:您遵循的示例,可能是这个: http://msdn.microsoft.com/en-us/library/ms733766.aspx 是从头开始在网站项目中创建WCF服务。不是添加预先存在的WCF项目并托管它。

你基本上试图以两种不同的方式做一件事。

您当前的操作方法是删除Web项目中的DLL,然后在那里创建服务。或者在IIS中托管您当前的WCF服务(您从我或原始项目下载的项目)

此时您有托管服务。然后通常你有一个应用程序与它进行交互。您使用svcutil找到了这个,可以通过以下两种方式之一完成:

您创建控制台应用程序并对您在IIS中托管的URL执行“添加服务引用”。

或者您使用SVC Util.exe将其指向url,该url会生成您在控制台/应用程序中包含的类文件。

我希望能够清除WCF以及使用各种工具的阶段吗?

修改2

万一你没有进入聊天:

我仍然认为原始项目有问题。我不确定你的DLL是什么意思?如果这意味着你的网站项目与WCF项目的dll,那么不是那个。

我参加了之前发给你的项目。我已经在IIS中进行了这样的操作,以便当我在我的机器上浏览到localhost / EvalService时,我得到了标准

“EvalService服务

您已创建了一项服务。

要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的svcutil.exe工具使用以下语法执行此操作:“

一旦我进行了设置,我就创建了一个控制台应用程序,在visual studio中添加了“添加服务参考”,它消耗了服务没问题。

尝试使用我发给你的项目进行上述操作,看看你能走多远。