web service 客户端代码问题
发布web service后像flex可以自动生成代码,用c#当客户端可以生成代码吗?求教大神c#接触的比较少
[解决办法]
可以使用svcutil工具自动生成wcf调用的客户端代码和配置文件
最简单的用法:
第一个参数:language 语言 第二个参数:生成的配置文件 第三个参数config,配置文件名称 最后直接是提供wsdl的地址
svcutil /language:C# /config:App.config /out:SoapClient.cs http://test.com/php?wsdl
用法:
- 通过正在运行的服务或静态元数据文档生成代码。
- 通过已编译的代码导出元数据文档。
- 验证已编译的服务代码。
- 通过正在运行的服务下载元数据文档。
- 预生成序列化代码。
-= 常用选项 =-
选项:
/target:<output type> - 工具的目标输出: code、metadata 或 xmlSerializer。
/directory:<directory> - 创建文件所在的目录(默认目录: 当前目录) (缩写: /d)
/svcutilConfig:<configFile> - 要代替应用程序配置文件使用的自定义配置文件。可以使用此文件注册 system.serviceModel 扩展,而不必更改工具的配置文件。
/noLogo - 取消版权和标题消息。
/help - 显示工具的命令语法和选项。(缩写: /?)
-= 代码生成 =-
说明: svcutil.exe 可以通过元数据文档为服务约定、客户端和数据类型生成代码。这些元数据文档可以在磁盘上,也可以联机检索。联机检索遵循 WS-Metadata Exchange 协议或 DISCO 协议。
Syntax: svcutil.exe [/t:code] <metadataDocumentPath>*
[解决办法]
<url>*
[解决办法]
<epr>
<metadataDocumentPath> - 元数据文档(wsdl 或 xsd)的路径。可以在文件路径中使用标准的命令行通配符。
<url> - 提供元数据的服务终结点的 URL 或联机寄宿的元数据文档的 URL。有关如何检索这些文档的详细信息,请参阅“元数据下载”部分。
<epr> - 包含服务终结点的 WS-Addressing EndpointReference (它支持 WS-Metadata Exchange)的 XML 文件路径。有关详细信息,请参阅“元数据下载”部分。
选项:
/out:<file> - 所生成代码的文件名。默认设置: 从某种架构的 WSDL 定义名称、WSDL 服务名称或 targetNamespace 派生。(缩写: /o)
/config:<configFile> - 所生成配置文件的文件名。默认文件名: output.config
/mergeConfig - 将生成的配置合并到现有文件中,而不是覆盖现有文件。
/noConfig - 不生成配置
/dataContractOnly - 只为数据约定类型生成代码。不会生成服务约定类型。(缩写: /dconly)
/language:<language> - 用于生成代码的编程语言。提供在 machine.config 文件中注册的语言名称,或提供从 System.CodeDom.Compiler.CodeDomProvider 继承的类的完全限定名称。要使用的语言名称示例包括 CS 和 VB。默认语言名称: C#。(缩写: /l)
/namespace:<string,string> - 从 WSDL 或 XML targetNamespace 到 CLR 命名空间的映射。如果将“*”用于 targetNamespace,会将没有显式映射的所有 targetNamespace 映射到该 CLR 命名空间。默认设置: 从数据约定架构文档的 targetNamespace 派生。默认命名空间用于所有其他生成的类型。(缩写: /n)
/messageContract - 生成消息约定类型。(缩写: /mc)
/enableDataBinding - 在所有数据约定类型上实现 System.ComponentModel.INotifyPropertyChanged 接口,以启用数据绑定。(缩写: /edb)
/serializable - 生成使用可序列化属性标记的类。(缩写: /s)
/async - 同时生成同步和异步方法签名。默认设置: 只生成同步方法签名。(缩写: /a)
/internal - 生成标记为内部的类。默认设置: 生成公共类。(缩写: /i)
/reference:<file path> - 引用指定程序集中的类型。生成客户端时,使用此选项指定可以包含代表所导入元数据的类型的程序集。(缩写: /r)
/collectionType:<type> - 基于架构生成代码时,作为集合数据类型使用的类型的完全限定的名称或程序集限定的名称。(缩写: /ct)
/excludeType:<type> - 要从所引用的约定类型中排除的完全限定的类型名称或程序集限定的类型名称。(缩写: /et)
/noStdLib - 不引用标准库。默认情况下,引用 mscorlib.dll 和 system.servicemodel.dll。
/serializer:Auto - 自动选择序列化程序。此选项先尝试使用数据约定序列化程序,如果失败,再尝试使用 XmlSerializer。(缩写: /ser)
/serializer:DataContractSerializer - 生成使用数据约定序列化程序以进行序列化和反序列化的数据类型
/serializer:XmlSerializer - 生成使用 XmlSerializer 进行序列化和反序列化的数据类型。
/importXmlTypes - 配置数据约定序列化程序,以将非数据约定类型作为 IXmlSerializable 类型导入。
/useSerializerForFaults - 此选项指定在“serializer”开关中指定的序列化程序是否用于错误协定类型。如果未指定此开关,则将 DataContractSerializer 用于错误。(缩写: /fault)
/targetClientVersion:Version30 - 生成引用了 .NET Framework 程序集 3.0 和更低版本中的功能的代码。如果为使用 .NET Framework 3.0 版的客户端生成代码,请使用此开关。(缩写为 /tcv)
/targetClientVersion:Version35 - 生成引用了 .NET Framework 程序集 3.5 和更低版本中的功能的代码。如果为使用 .NET Framework 3.5 版的客户端生成代码,请使用此开关。(缩写为 /tcv)
/wrapped - 生成的代码将不会取消 document-wrapped-literal 消息的“参数”成员的封装。
-= 元数据导出 =-
说明: svcutil.exe 可以为已编译的程序集中的服务、约定和数据类型导出元数据。要导出服务的元数据,必须使用 /serviceName 选项指示要导出的服务。要导出程序集内的所有数据约定类型,请使用 /dataContractOnly 选项。默认情况下,为输入程序集中的所有服务约定导出元数据。
Syntax: svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*
<assemblyPath> - 包含要导出服务、约定或数据约定类型的程序集路径。可以使用标准的命令行通配符将多个文件作为输入提供。
选项:
/serviceName:<serviceConfigName> - 要导出服务的配置名称。如果使用此选项,必须将包含关联配置文件的可执行程序集作为输入传递。Svcutil 将在所有关联的配置文件中搜索服务配置。如果配置文件中包含任何扩展类型,则包含这些类型的程序集必须在 GAC 中,或使用 /r 选项显式提供这些程序集。
/reference:<file path> - 将指定程序集添加到用于解析类型引用的程序集组中。如果要导出或验证使用在配置中注册的三方扩展(Behaviors、Bindings 和 BindingElements)的服务,请使用此选项定位不在 GAC 中的扩展程序集。(缩写: /r)
/dataContractOnly - 只处理数据约定类型。不会处理服务约定。(缩写: /dconly)
/excludeType:<type> - 要从导出中排除的类型的完全限定的名称或程序集限定的名称。导出服务或服务约定集的元数据时,可以使用此选项禁止导出相应的类型。此选项无法与 /dconly 选项一起使用。(缩写: /et)
-= 服务验证 =-
说明: 可以通过验证检测服务实现中的错误,而不必寄宿服务。必须使用 /serviceName 选项指示要验证的服务。
Syntax: svcutil.exe /validate /serviceName:<serviceConfigName> <assemblyPath>*
<assemblyPath> - 包含要验证的服务类型的程序集路径。该程序集必须包含提供服务配置的关联配置文件。可以使用标准的命令行通配符提供多个程序集。
选项:
/validate - 验证服务实现。要验证服务,必须使用 /serviceName 选项指示要验证的服务。如果使用此选项,必须将包含关联配置文件的可执行程序集作为输入传递。(缩写:/v)
/serviceName:<serviceConfigName> - 要验证服务的配置名称。要验证服务,必须提供此选项。Svcutil 将在所有输入程序集的关联配置文件中搜索服务配置。如果关联的配置文件中包含任何扩展类型,则包含这些类型的程序集必须在 GAC 中,或使用 /r 选项显式提供这些程序集。
/reference:<file path> - 将指定程序集添加到用于解析类型引用的程序集组中。如果要导出或验证使用在配置中注册的三方扩展(Behaviors、Bindings 和 BindingElements)的服务,请使用此选项定位不在 GAC 中的扩展程序集。(缩写: /r)
/dataContractOnly - 只处理数据约定类型。不会处理服务约定。(缩写: /dconly)
/excludeType:<type> - 要从验证中排除的服务类型的完全限定的名称或程序集限定的名称。(缩写: /et)
-= 元数据下载 =-
说明: 可以使用 svcutil.exe 通过正在运行的服务下载元数据,并将元数据保存到本地文件中。要下载元数据,必须显式指定 /t:metadata 选项。否则,将生成客户端代码。对于 http 和 https URL 架构,svcutil.exe 将尝试使用 WS-Metadata Exchange 和 DISCO 检索元数据。对于所有其他 URL 架构,svcutil.exe 将只尝试使用 WS-Metadata Exchange。默认情况下,svcutil.exe 使用 System.ServiceModel.Description.MetadataExchangeBindings 类中定义的绑定。要配置用于 WS-Metadata Exchange 的绑定,必须在使用 IMetadataExchange 约定的配置中定义一个客户端终结点。此终结点可以在 svcutil.exe 的配置文件中定义,也可以在使用 /svcutilConfig 选项指定的其他配置文件中定义。
Syntax: svcutil.exe /t:metadata <url>*
[解决办法]
<epr>
<url> - 提供元数据的服务终结点的 URL,或指向联机寄宿的元数据文档的 URL。
<epr> - 包含服务终结点的 WS-Addressing EndpointReference (它支持 WS-Metadata Exchange)的 XML 文件路径。
-= XMLSERIALIZER 类型生成 =-
说明: svcutil.exe 可以预生成 C# 序列化代码,该代码是在可以使用 XmlSerializer 进行序列化的类型所必需的。svcutil.exe 将只为在输入程序集中找到的服务约定所使用的类型生成代码。
Syntax: svcutil.exe /t:xmlSerializer <assemblyPath>*
<assemblyPath> - 包含服务约定类型的程序集的路径。将为每个约定中的所有 XML 可序列化类型生成序列化类型。
选项:
/reference:<file path> - 将指定的程序集添加到用于解析类型引用的程序集组中。(缩写: /r)
/excludeType:<type> - 要从导出或验证中排除的完全限定的类型名称或程序集限定的类型名称。导出服务或服务约定集的元数据时,可以使用此选项禁止导出相应的类型。此选项无法与 /dataContractOnly 选项一起使用。(缩写: /et)
/out:<file> - 所生成代码的文件名。如果将多个程序集作为输入传递给工具,则将忽略此选项。默认设置: 从程序集名称派生。(缩写: /o)
-= 示例 =-
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 类型生成序列化类型