如何使用SvcUtil.exe生成WCF服务

Skr*_*rch 7 .net c# wcf web-services contract-first

我使用SvcUtil.exe从wsdl文件生成IClassName.cs文件,这是正常的.我的问题是我不知道如何使用SvcUtil.exe的命令参数生成ClassName.svc文件.

运行SvcUtil.exe之后,我想获得WCF服务,就像从包含所有类*.svc,*.cs和interface的Visual Studio向导创建时一样.

谢谢,Skrch

小智 18

首先要生成代理类,我们需要启动并运行我们的服务.因此,在使用此实用程序之前,请确保您的服务正在运行而没有任何问题

验证服务状态后,转到Visual Studio命令提示符并运行以下命令.

svcutil http://localhost/MyService/ClassName.svc /Language=c#
/t:Code /out:ClassNameProxy.cs /config:ClassNameProxy.config
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,您应该将服务URL(http://localhost/MyService/Service1.svc)替换为您的服务的URL.由于我的服务是在c#.net中开发的,所以我选择使用/ Language = c#flag生成相同语言的代理.

/ t:代码将指定输出应该作为代码生成.

/out:ClassNameProxy.cs /config:ClassNameProxy.config参数将告诉实用程序命名这些参数值中指定的文件.运行该命令后,工具将生成输出文件和配置文件.

之后,只需将ClassNameProxy.cs文件包含到项目中,然后打开ClassNameProxy.config文件并将条目复制到web.config文件中.您可能还需要更新ClassNameProxy.vb文件,并根据您在项目中使用的名称空间更新名称空间.之后,您可以轻松地在代码中引用该服务并调用操作.


小智 13

工具的一些例子如何使用它

svcutil http://service/metadataEndpoint - 从正在运行的服务或在线元数据文档生成客户端代码.

svcutil *.wsdl *.xsd /language:C# - 从本地元数据文档生成客户端代码.

svcutil /dconly *.xsd /language:VB - 从本地模式文档生成VisualBasic中的数据协定类型.

svcutil /t:metadata http://service/metadataEndpoint - 从运行的服务下载元数据文档

svcutil myAssembly.dll - 为装配中的服务合同和关联类型生成元数据文档

svcutil myServiceHost.exe /serviceName:myServiceName - 为服务生成元数据文档,并在程序集中生成所有关联的服务合同和数据类型

svcutil myServiceHost.exe/dconly - 为程序集中的数据类型生成元数据文档

svcutil /validate /serviceName:myServiceName myServiceHost.exe - 验证服务托管

svcutil /t:xmlserializer myContractLibrary.exe - 为程序集中的任何服务合同使用的XmlSerializer类型生成序列化类型


Sey*_*our 1

我认为 .NET 4.5 Contract First Tool作为构建任务集成到 Visual Studio 2012 中,将帮助您生成所需的服务文件。

服务合同通常需要根据现有服务创建。在 .NET Framework 4.5 中,可以使用契约优先工具从现有服务自动创建数据契约类。要使用契约优先工具,必须将 XML 模式定义文件 (XSD) 下载到本地;该工具无法通过 HTTP 导入远程数据合同。

http://msdn.microsoft.com/en-us/library/hh674270(v=vs.110).aspx