如果在 Windows Server 上使用 Internet Information Services (IIS),并且你的部署包含 Windows 无法识别的文件类型(如 Microsoft Word 文件),IIS 将拒绝传输该文件,并且部署不会成功。
此外,某些 Web 服务器和 Web 应用程序软件(如 ASP.NET)包含无法下载的文件和文件类型列表。 例如,ASP.NET 会阻止下载所有 Web.config 文件。 这些文件可能包含敏感信息,例如用户名和密码。
尽管此限制不应导致下载核心 ClickOnce 文件(如清单和程序集)的问题,但此限制可能会阻止下载作为 ClickOnce 应用程序的一部分包含的数据文件。 在 ASP.NET 中,可以通过删除禁止从 IIS 配置管理器下载此类文件的处理程序来解决此错误。 有关更多详细信息,请参阅 IIS 服务器文档。
某些 Web 服务器可能会阻止扩展名为 .dll、 .config和 .mdf的文件。 基于 Windows 的应用程序通常包含具有其中一些扩展的文件。 如果用户尝试运行访问 Web 服务器上的阻止文件的 ClickOnce 应用程序,则将导致错误。 与其取消阻止所有文件扩展名,ClickOnce 默认将每个应用程序文件发布为 .deploy 文件扩展名。 因此,管理员只需将 Web 服务器配置为取消阻止以下三个文件扩展名:
.application
。清单
部署。
但是,可以通过清除“
发布选项”对话框中的 使用“.deploy”文件扩展名 选项来禁用此选项,禁用此选项后,必须配置 Web 服务器,打开应用程序中使用的所有文件扩展名的访问权限。
例如,如果使用未安装 .NET Framework 的 IIS,或者使用的是其他 Web 服务器(例如 Apache),则必须配置 .manifest、 .application 和 .deploy。
ClickOnce 和安全套接字协议 (SSL)
ClickOnce 应用程序可以通过 SSL 正常工作,除非浏览器引发有关 SSL 证书的提示。 当证书出现问题(例如站点名称不匹配或证书过期时),可能会引发提示。 若要使 ClickOnce 通过 SSL(安全套接字层)连接工作,请确保证书是最新的,并且证书数据与站点数据匹配。
ClickOnce 和代理身份验证
ClickOnce 支持从 .NET Framework 3.5 开始的 Windows 集成代理身份验证。 不需要特定的 machine.config 指令。 ClickOnce 不支持其他身份验证协议,例如“基本”或“摘要”。
还可以将修补程序应用于 .NET Framework 2.0 以启用此功能。 有关详细信息,请参阅 FIX:在尝试将 .NET Framework 2.0 中创建的 ClickOnce 应用程序安装到配置为使用代理服务器的客户端计算机上时出现错误消息:“需要代理身份验证”。
有关详细信息,请参阅 <defaultProxy> 元素(网络设置)。
ClickOnce 和 网页浏览器兼容性
目前,仅当使用浏览器打开部署清单的 URL 时,ClickOnce 安装才会启动。 仅当将 Internet Explorer 设置为默认 Web 浏览器时,从其他应用程序(如 Microsoft Office Outlook)启动的部署才能成功启动其 URL。
注释
当部署提供程序为非空或已安装 Microsoft .NET Framework 助手扩展时,Mozilla Firefox 会被支持。 此扩展随附于 .NET Framework 3.5 SP1 中。 对于 XBAP 支持,NPWPF 插件会在当需要时被激活。
通过浏览器脚本激活 ClickOnce 应用程序
如果已开发使用活动脚本启动 ClickOnce 应用程序的自定义网页,你可能会发现应用程序不会在某些计算机上启动。 浏览器包含一个设置,例如 自动提示文件下载,这会影响此行为。 此浏览器设置通常列在 “下载 ”类别下,默认启用。 禁用此设置后,将阻止任何以编程方式激活 ClickOnce 应用程序(例如,通过将 URL document.location 分配给属性)的尝试。 在这种情况下,用户只能通过用户启动的下载来启动应用程序,例如,通过单击指向应用程序的 URL 的超链接。
其他服务器配置问题
所需的管理员权限
如果使用 HTTP 发布,则必须对目标服务器具有管理员权限。 IIS 需要此权限级别。 如果不使用 HTTP 发布,则只需对目标路径具有写入权限。
服务器身份验证问题
发布到已关闭“匿名访问”的远程服务器时,将收到以下警告:
"The files could not be downloaded from http://<remoteserver>/<myapplication>/. The remote server returned an error: (401) Unauthorized."
注释
如果站点提示输入非默认凭据的其他凭据,则可以使 NTLM(NT 质询-响应)身份验证正常工作。当您在安全对话框中被询问是否要保存已输入的凭据用于将来的会话时,请单击确定。 但是,此解决方法不适用于基本身份验证。
使用第三方 Web 服务器
如果要从 IIS 以外的 Web 服务器部署 ClickOnce 应用程序,如果服务器返回键 ClickOnce 文件(例如部署清单和应用程序清单)的内容类型不正确,则可能会遇到问题。 若要解决此问题,请参阅 Web 服务器的帮助文档,了解如何向服务器添加新内容类型,并确保下表中列出的所有文件扩展名映射都已到位。
| 文件扩展名 | 内容类型 |
|---|---|
.application |
application/x-ms-application |
.manifest |
application/x-ms-manifest |
.deploy |
application/octet-stream |
.msu |
application/octet-stream |
.msp |
application/octet-stream |
ClickOnce 和映射驱动器
如果使用 Visual Studio 发布 ClickOnce 应用程序,则无法将映射的驱动器指定为安装位置。 但是,可以使用清单生成器和编辑器(Mage.exe 和 MageUI.exe)修改 ClickOnce 应用程序以从映射驱动器进行安装。 有关详细信息,请参阅 Mage.exe(清单生成和编辑工具)和 MageUI.exe(清单生成和编辑工具、图形客户端)。
安装应用程序不支持 FTP 协议
ClickOnce 支持从任何 HTTP 1.1 Web 服务器或文件服务器安装应用程序。 安装应用程序不支持 FTP(文件传输协议)。 仅可以使用 FTP 发布应用程序。 下表汇总了这些差异:
| URL 类型 | Description |
|---|---|
| ftp:// | 可以使用此协议发布 ClickOnce 应用程序。 |
| http:// | 可以使用此协议安装 ClickOnce 应用程序。 |
| https:// | 可以使用此协议安装 ClickOnce 应用程序。 |
| file:// | 可以使用此协议安装 ClickOnce 应用程序。 |
Windows 防火墙
默认情况下,Windows 启用 Windows 防火墙。 如果要在安装了 Windows 的计算机上开发应用程序,仍可从运行 IIS 的本地服务器发布和运行 ClickOnce 应用程序。 但是,除非打开 Windows 防火墙,否则无法从另一台计算机访问运行 IIS 的服务器。 有关管理 Windows 防火墙的说明,请参阅 Windows 帮助。
Windows Server:启用 FrontPage 服务器扩展
将应用程序发布到使用 HTTP 的 Windows Web 服务器需要来自 Microsoft 的 FrontPage 服务器扩展。
默认情况下,Windows Server 未安装 FrontPage Server Extensions。 如果要使用 Visual Studio 发布到将 HTTP 与 FrontPage 服务器扩展配合使用的 Windows Server Web 服务器,必须先安装 FrontPage 服务器扩展。 可以使用 Windows Server 中的“管理服务器”管理工具执行安装。
Windows Server:锁定内容类型
Windows Server 2003 上的 IIS 锁定除某些已知内容类型之外的所有文件类型(例如 ,.htm、 .html、 .txt等)。 若要使用此服务器启用 ClickOnce 应用程序的部署,需要更改 IIS 设置,以允许下载应用程序使用的 .application、 .manifest 和任何其他自定义文件类型的文件。
如果使用 IIS 服务器进行部署,请运行 inetmgr.exe 并为默认网页添加新的文件类型:
对于 .application 和 .manifest 扩展,MIME 类型应为“application/x-ms-application”。对于其他文件类型,MIME 类型应为“application/octet-stream”。
如果创建扩展名为“em<”>的 MIME 类型,并且 MIME 类型为“application/octet-stream”,它将允许下载未阻止文件类型的文件。 (但是,像 *.aspx 和 *.asmx 这样的被阻止的文件类型无法下载。)
有关在 Windows Server 上配置 MIME 类型的具体说明,请参阅 如何将 MIME 类型添加到网站或应用程序。
内容类型映射
通过 HTTP 发布时, .application 文件的内容类型(也称为 MIME 类型)应为“application/x-ms-application”。如果在服务器上安装了 .NET Framework 2.0,将自动为你设置此设置。 如果未安装,则需要为 ClickOnce 应用程序 vroot(或整个服务器)创建 MIME 类型关联。
如果使用 IIS 服务器进行部署,请运行 inetmgr。exe 并为 . application 扩展添加新的“application/x-ms-application”内容类型。
HTTP 压缩问题
借助 ClickOnce,可以执行使用 HTTP 压缩的下载,这是使用 GZIP 算法压缩数据流的 Web 服务器技术,然后再将流发送到客户端。 在本例中,ClickOnce 客户端在读取文件之前解压缩流。
如果使用 IIS,可以轻松启用 HTTP 压缩。 但是,启用 HTTP 压缩时,仅对某些文件类型(即 HTML 和文本文件)启用它。 若要为程序集(.dll)、XML(.xml)、部署清单(.application)和应用程序清单(.manifest)启用压缩,必须将这些文件类型添加到 IIS 要压缩的类型列表中。 在将文件类型添加到部署之前,只会压缩文本和 HTML 文件。
有关 IIS 的详细说明,请参阅 如何为 HTTP 压缩指定其他文档类型。