我用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.
答案 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中添加了“添加服务参考”,它消耗了服务没问题。
尝试使用我发给你的项目进行上述操作,看看你能走多远。