0

我有一个由多个不同客户端使用的 Web 应用程序。目前,使用任何更改更新其结尾的过程是这样的:

  • 发布/编译应用程序
  • 将相关文件放入 zip 中(而不是将 web.config 作为每个客户端的不同数据库路径并且不想覆盖)
  • 在 SQL Server 上为所有存储过程生成脚本
  • 添加到邮编
  • 上传 zip 到网络
  • 我创建的从客户端服务器运行的 WPF 应用程序下载 zip,将文件提取到 Web 应用程序文件夹并执行 sql server 存储过程的脚本

现在这确实有效,但它需要客户端的 IT 人员运行 WPF 应用程序来更新,并且可能需要几天时间才能让他们中的一些人开始使用它。所以我想做的是提供从网络应用程序内部更新网络应用程序的能力。我知道我可以创建一个 DLL 来执行 FTP、提取等,但我怎样才能让它在页面上显示进度?

或者,如果有人可以在不需要某人访问服务器的情况下更新 Web 应用程序,那就太好了,因为这种方法很难让客户知道何时有可用的更新。

4

1 回答 1

0

你可以使用即

[assembly: PreApplicationStartMethod(typeof(Your.Type), "MethodNameToCall")]

它在项目的 AssemblyInfo.cs 文件中指定,以便在部署应用程序时执行一些设置代码。这会在部署时自动运行,并允许您进行复制/设置。您可能可以通过此代码运行 WPF 应用程序

System.Diagnostics.Process

更新:

重新阅读这篇文章后,我似乎很清楚这是关于从 WPF 应用程序迁移到基于 Web 的应用程序。此外,张贴者似乎只是想要一种方法来从更新客户端文件系统的代码中发出信号,所以......

根据所需输入的复杂程度,您可能需要一个或多个页面和一个导航系统来前进和后退。

然而,一旦所有输入都被采纳并开始更新,您有几个选项 - 一个“hacky”另一个不是。

1 - Hacky) 使用 window.location javascript 和 setTimeout 以及会话跟踪刷新页面以更新 EWWWWW 后面的线程编码的进度...

2)使用 setInterval 创建一个 ajax 函数来轮询服务器(可能使用带有 [WebMethod] 属性的可调用方法。此方法可以将任意数据发送回 ajax 调用,然后用于更新 UI(可能使用某些东西)像 jqueryUI 进度条

注意:如果您要替换 bin 中的任何内容,请触摸 web.config 或实际上任何 .aspx 页面。然后您将自动重新启动服务器......如果是这种情况,那么您将不得不编写一个单独的应用程序,该应用程序将从外部更新另一个应用程序+您应该向任何连接的用户发出信号,告知将很快关闭并开始阻塞新用户,直到升级完成。

于 2012-10-02T12:31:17.213 回答