可以使用 Visual Studio IDE 或在命令行中使用 msbuild 命令生成 Windows Communication Foundation (WCF) 示例。 本文介绍这两个过程。
注意
在生成或运行任何 WCF 示例之前,请确保已执行 Windows Communication Foundation 示例的一次性安装过程。
使用命令提示生成示例
打开 Visual Studio 的开发人员命令提示,然后导航到安装此示例的目录位置下语言特定的子目录。
在命令行处键入
msbuild
。 客户端程序文件在 client\bin 中生成,服务程序文件在 service\bin 中生成。 如果服务由 Internet Information Services (IIS) 承载,服务程序文件还将被复制到 servicemodelsamples 目录及其 \bin 子目录中。
注意
您必须在 %systemdrive%\inetpub\wwwroot 上设置 ACL,以便为您运行的帐户授予修改权限。 否则,某些后期生成事件将失败。 或者,您可以将 ACL 保留原样,而以管理员身份运行 SDK 命令提示。
使用 Visual Studio 生成示例
从 Visual Studio 的“文件”菜单中,选择“打开”>“项目/解决方案”。 定位至示例安装目录下的语言特定的子目录,然后双击 .sln 文件图标,以便在 Visual Studio 中打开该解决方案。
在“生成”菜单中选择“重新生成解决方案”。
客户端程序文件在 client\bin 中生成,服务程序文件在 service\bin 中生成。 如果服务在 IIS 中承载,服务程序文件还将被复制到 servicemodelsamples 目录及其 \bin 子目录中。
注意
您必须在 %systemdrive%\inetpub\wwwroot 上设置 ACL,以便为您运行的帐户授予修改权限。 否则,某些后期生成事件将失败。 或者,您可以将 ACL 保留原样,而以管理员身份运行 SDK 命令提示或 Visual Studio。 某些 Visual Studio 操作(例如,为 ASP.NET 工作进程附加调试器)也需要管理特权。
设置批处理文件和脚本
Setup.exe 和 Cleanup.exe 批处理文件和脚本应在 Visual Studio 的开发人员命令提示中运行。 有几个设置和清理文件将执行需要具有管理特权的任务,应使用管理特权来启动它们。
有关元数据终结点的重要安全信息
为了防止无意中泄露潜在的敏感服务元数据,Windows Communication Foundation (WCF) 服务的默认配置将禁用元数据发布。 默认情况下此行为是安全的,但也意味着你无法使用元数据导入工具(例如 Svcutil.exe)生成调用服务所需的客户端代码,除非在配置中显式启用服务的元数据发布行为。 为了使示例体验更简单,几乎所有示例都公开一个不安全的元数据发布终结点。 此类终结点或许可以供未通过身份验证的匿名使用者使用,因此在部署此类终结点之前,必须谨慎以确保适合公开透露服务元数据。 有关发布服务元数据的详细信息,请参阅元数据发布行为示例。 有关保护元数据终结点的示例,请参阅自定义安全元数据终结点示例。
异常处理
一般来说,这些示例不包括异常处理,以使代码集中处理示例的主题。 有关异常处理的详细信息,请参阅预期异常示例。
使用 Svcutil 重新生成客户端和配置
你可以使用 ServiceModel 元数据实用工具 (Svcutil.exe) 为大多数示例重新生成客户端代码和配置。 某些示例需要手动编辑的配置。 例如,如果您使用 Svcutil.exe 为某个使用客户端证书凭据的示例重新生成配置,必须手动指定之前配置的凭据。 某些示例使用特定的 Svcutil.exe 选项来影响生成的代码,这些选项在具体的示例主题中进行指定。
重新生成客户端和配置文件
打开 SDK 命令提示,然后定位到安装示例的目录位置下的语言特定的子目录。
如果服务是 Web 承载的类型,请使用以下命令。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
如果服务是自承载类型,请键入以下命令。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /out:generatedClient.cs
将
http://localhost:8000/ServiceModelSamples/service.svc/mex
替换为自承载服务的 mex 终结点的地址。若要在 Visual Basic 类型中生成客户端,请使用以下命令。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
如果服务是自承载类型,请使用以下命令。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
注意
若要跳过客户端配置的生成,请添加 /noConfig 选项。