初始化asp.net部署

初始化asp.net部署,asp.net,Asp.net,我有一个基本的webforms asp.net网站。目前它正在处理预先创建的sql表,我必须手动触发它来更新数据。不过,为了实现实时部署,我想让它更舒适 我该如何使服务器软件在加载时,在接受任何请求之前的第一件事就是运行初始化子程序?只是为了确保所有的表都在那里,如果没有,我会创建它们等等 此外,我还想运行另一个子系统,每隔几个小时定期触发数据更新。我在想,如果我可以得到我的初始化子线程,我可以生成一个后台线程来处理这个问题,但是如果有一个内置选项,我就接受它。这就是所谓的“部署” 如果您的网站

我有一个基本的webforms asp.net网站。目前它正在处理预先创建的sql表,我必须手动触发它来更新数据。不过,为了实现实时部署,我想让它更舒适

我该如何使服务器软件在加载时,在接受任何请求之前的第一件事就是运行初始化子程序?只是为了确保所有的表都在那里,如果没有,我会创建它们等等


此外,我还想运行另一个子系统,每隔几个小时定期触发数据更新。我在想,如果我可以得到我的初始化子线程,我可以生成一个后台线程来处理这个问题,但是如果有一个内置选项,我就接受它。

这就是所谓的“部署”

如果您的网站是通过MSI部署的,则此步骤应在MSI中完成

如果您的网站是通过VisualStudio“发布”选项部署的,则需要在此处创建表

有些应用程序确实如您所说,例如:在第一次运行时创建SQL表。这种方法的问题在于,你的应用程序需要sa权限,而不是简单的读/写权限。这可能导致安全问题

在网站启动(初始化所属)上运行的代码位于global.asax中:

protected void Application_Start()
每当服务器软件加载它时

在asp.net中,您有
global.asax
文件-打开该文件背后的代码并查看可能的覆盖。其中包括:

protected void Application_Start()
它总是在应用程序启动时运行,您可以使用它来检查数据库

如果您处于一个“内部”环境中,其中只有一个实时数据库服务器和一个实时应用程序服务器,那么可以假定数据库是在应用程序之前部署的,而您不需要这样做。如果您正在向第三方提供应用程序或在web上提供应用程序,那么这是一个检查的好地方。如何生成DB取决于您自己,但是在这里检查是一个好主意。你也可以在你的网站上有一个(隐藏的)管理员页面,用来检查数据库连接等

定期触发数据更新


这不会内置到asp.net,因为asp.net会等待请求并响应它们。有很多方法可以解决这个问题,但通常是在应用程序外部触发的。最简单的是一个简单的windows计划任务,它点击页面触发检查

虽然我没有global.asax文件,但我将页面作为一个空项目启动。那我就创建它吗?另外,我不能在应用程序_start()中启动一个线程,而不是通过对特殊页面的请求触发更新吗?已经有一段时间了,但类似于:右键单击解决方案资源管理器中的项目,添加文件,在列表中查找global.asax(可能在web下)。不要只添加文件,因为有
global.asax
global.asax.cs
,它们需要成对添加到项目中。“将页面作为一个空项目启动”-您是否将其作为一个空的web项目启动?如果不是,试着创建一个新的项目作为一个网站,看看你得到了什么(不是建议你从头开始,只是看看)假设你在IIS中托管,IIS刷新它的应用程序池,所以你不能保证你的线程仍然存在。我不确定是否还有其他反对的理由,但这听起来像是一个糟糕的架构选择,也许可以?