Windows Communication Foundation (WCF) 服务发布可帮助你从 WCF 服务主机和 WCF 测试客户端提供的早期开发环境进行进度,以便将应用程序实际部署到生产环境进行测试。 在提交到最终部署计划之前,可以使用 Windows Communication Foundation (WCF) 服务发布来验证 WCF 服务是否正常运行并已准备好发布。 还可以选择将 WCF 服务库部署到各种目标位置进行测试。
支持的服务和目标位置
WCF 服务发布支持发布从 WCF 服务库模板集创建的 WCF 服务及其相应的项模板,其中包括:
带有项模板的 WCF 服务库模板。
联合服务库。
可以通过选择 “文件>新建项目> ”[Visual Basic 或 Visual C#] >WCF 找到这些服务模板。 对于此位置的其他 WCF 模板(包括 WCF 工作流服务应用程序和 WCF 服务应用程序),可以使用适用于 web 应用程序的一键式发布进行发布。
该服务可以发布到以下目标位置。
本地 IIS。
文件系统。
FTP 站点。
使用 WCF 服务发布
执行以下步骤来部署服务实现:
使用提升的权限打开 Visual Studio(右键单击可执行文件并选择 “以管理员身份运行 ”将其打开)。 如果使用 IIS 7.0 或更高版本,请确保已在控制面板中使用“打开或关闭 Windows 功能”安装“IIS 元数据库和 IIS6 配置兼容性”组件。
打开服务项目,从主菜单中选择“ 生成>发布 <项目名称> ”,或在 解决方案资源管理器 中右键单击该项目,然后单击“ 发布”。
此时会显示 “发布” 窗口。 单击“….”。 按钮,指定应将服务部署到的目标位置。 可以选择将应用程序部署到本地 IIS、文件系统或 FTP 站点。 如果将应用程序部署到本地 IIS,可以通过单击右上角的“ 创建新 Web 应用程序 ”图标,选择网站并在其下创建 Web 应用程序。
在主窗口中单击“ 发布 ”后,Visual Studio 会将应用程序部署到指定的目标位置,并将 Web.config、.svc 和程序集文件复制到目标目录。 . .svc 的名称将为“ProjectName.ServiceName.svc”。 成功发布服务后,可以在 Visual Studio 输出窗口中找到一个热链接,其外观类似于“连接到
http://localhost/WebApplicationFolderName...
”。 可以按 Ctrl 并单击链接以在 Visual Studio 中打开浏览器页面以查看服务目录结构。如果无法浏览到站点,则可能是因为 IIS 中未启用目录浏览器。 请按照“可以尝试的事项”部分中的提示启用该功能。 或者,可以直接键入
http://localhost/WebApplicationFolderName/ProjectName.ServiceName.svc
以查看服务页。
可以使用 发布 来指定是否要将项目中定义的所有服务的程序集、配置和 .svc 文件复制到目标位置,并覆盖目标中的现有文件。
如果选择将应用程序部署到本地 IIS,可能会遇到与 IIS 设置相关的错误。 请确保 IIS 已正确安装。 可以在浏览器的地址栏中输入 http://localhost
,并检查 IIS 默认页面是否显示。 在某些情况下,问题也可能是由 IIS 中 ASP.NET 或 WCF 注册不当引起的。 可以打开 Visual Studio 的开发人员命令提示符并运行该命令 aspnet_regiis.exe -ir
来修复 ASP.NET 注册问题,或运行命令 ServiceModelReg.exe –ia
来修复 WCF 注册问题。
生成的待发布文件
在 WCF 服务库可以承载 Web 之前,工具将生成以下文件:程序集文件、Web.config 文件和 .svc 文件。 所有文件都复制到目标位置。 该服务随即发布。
程序集文件
使用此工具发布 WCF 服务时,首先自动生成该服务,生成完毕后将在服务项目中生成程序集文件。
.SVC 文件
发布操作会为每个 WCF 服务生成一个 *.svc 文件,无论该文件是否存在,以便确保版本的有效性。 有两种不同类型的 svc 文件:一个用于 WCF 服务库和联合服务库,另一种用于顺序和状态机工作流服务库。 生成的 *.svc 文件将复制到目标位置中的根文件夹。
Web.config 文件
每次将服务项目发布到特定目标位置时,都会创建 Web.config 文件。
生成的 Web.config 文件包括可用于 Web 托管的 Web 节,以及 WCF 服务库 App.config 的内容,并进行了以下更改:
排除了基址。
排除元素中的
<diagnostics>
设置以保留目标平台的跟踪设置。
将具有非 HTTP 绑定的 WCF 服务发布到 IIS
如果使用 IIS7.0 或更高版本,则可以将具有非 HTTP 绑定的 WCF 服务发布到 IIS。 需要执行一些预配置。 有关详细信息,请参阅 Windows 进程激活服务中托管的主题。
安全
发布到本地 IIS 需要管理员权限,因为 IIS 需要在管理员帐户中运行。 如果没有系统管理员权限的用户打开 WCF 服务发布功能,则无法将 IIS 用作目标位置。 发布至文件系统或 FTP 站点无需管理员权限即可运行。