我们有一个 WPF 应用程序,它有两种风格,具有一致的 UI 等,一种从 Windows 操作系统桌面运行,另一种应该作为 XBAP 应用程序运行。

目前,我正在将 XBAP 应用程序发布到我的本地计算机 IIS (Windows XP Pro),此外,我还根据需要在我的场景中启用了完全信任(Microsoft .NET Framework 2.0 配置,URL 完全信任)+ pfx 文件(对于我的计算机) name),当另一台计算机上的用户从其计算机上的 IE 浏览器键入 URL 时,就会安装该程序。

假设我想将 XBAP 应用程序出售给客户,因为他想要一个集中式应用程序而不是桌面应用程序,那么我将如何去做呢?有XBAP部署经验的人可以告诉我吗?我应该进行设置以在他的网络服务器上设置应用程序吗?(假设 Web 服务器有 .net 3.5 sp1)pfx 和完全信任怎么样,我应该告诉他这样做吗?

有帮助吗?

解决方案

我曾经遇到过类似的情况,使用 ClickOnce 作为引擎将二进制文件部署为 XBAP 以及标准 WPF。要在客户站点安装 XBAP 网站,我们将让安装程序在 IIS 中创建虚拟目录,然后运行自定义步骤来签署 ClickOnce 清单。此步骤是必要的,因为应用程序需要访问生成的配置文件,其中包含有关客户环境的信息。

以下是我在使用 XBAP 时遇到的问题的一些注释。

  • Framework v3.0 或更高版本对客户端工作站的依赖性。(更多的是处理 WPF 时的一般注意事项,因为除非您使用受控桌面,否则您可能还必须部署它)
  • 令人费解的是,用户的 ClickOnce 缓存将失效,要求用户必须使用以下方法清除缓存:rundll32 %windir%\system32\dfshim.dll CleanOnlineAppCache
  • Framework v3.0/Internet Explorer 安装错误需要重新创建用户配置文件、重新安装 dotNet 框架或重新安装 Internet Explorer。
  • 当部署失败时,ClickOnce 发出的错误消息很差。很多时候它会报告一般部署异常,修复方法是上述步骤之一。
  • 当在网站前面使用任何身份验证时,例如 ASP.Net 表单身份验证、受信任的 IIS(不在 Intranet 上)或 ISA 等代理,Microsoft 堆栈中存在一个问题,即 IE 将无法将身份验证传递给ClickOnce 引擎。问题是 IE 将成功进行身份验证,但无法将安全上下文传递给 ClickOnce。当 ClickOnce 尝试部署应用程序文件时,它将没有安全上下文,并且身份验证将失败。但是,如果您转到“Internet 选项”-->“安全”--> 选择“本地 Intranet”--> 单击“自定义级别...”,您将看到一个设置列表。滚动到列表底部,然后在“用户身份验证”-->“登录”--> 下,确保选中“使用当前用户名和密码自动登录”选项。这应该允许 IE 将身份验证信息传递给单击一次应用程序。

其他提示

要运行XBAP应用程序,客户端还需要运行.NET框架。没有安装.NET Framework,就无法运行XBAP。

默认情况下,只为您的应用程序授予部分信任权限。要启用FullTrust,您需要将权限授予客户端上的应用程序URL:

caspol -m -ag 1 -url "http://server/app/*" FullTrust -exclusive on

或者您可以将安全证书添加到客户端可信证书。此处提供了分步指南:如何运行WPF - XBAP作为完全信任应用程序

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top