C# “显示”;“离线”;更新数据库时MVC3中的页面?

C# “显示”;“离线”;更新数据库时MVC3中的页面?,c#,asp.net-mvc-3,iis-7.5,C#,Asp.net Mvc 3,Iis 7.5,我有一个由SQL server db支持的MVC3网站。 数据库每天晚上都会“刷新”,大约需要30分钟 在此期间,我可以使用app_offline.htm文件使应用程序脱机(以及所有可能导致的问题) db刷新由windows服务控制,因为其中一部分是从不同来源导入文本文件 我想知道是否有一种更干净、更好的方法来修改网站,使其显示友好的“数据库更新”类型页面,而不使网站离线?一种简单的方法是在web.config的appSettings中添加一个键,例如: <add key="Mainten

我有一个由SQL server db支持的MVC3网站。 数据库每天晚上都会“刷新”,大约需要30分钟

在此期间,我可以使用app_offline.htm文件使应用程序脱机(以及所有可能导致的问题)

db刷新由windows服务控制,因为其中一部分是从不同来源导入文本文件


我想知道是否有一种更干净、更好的方法来修改网站,使其显示友好的“数据库更新”类型页面,而不使网站离线?

一种简单的方法是在web.config的appSettings中添加一个键,例如:

<add key="MaintenanceMode" value="true" />


然后,您可以使用global.asax文件中的应用程序\u BeginRequest事件,检查密钥的值并重定向到维护页面。

一个简单的方法是在web.config的appSettings中添加密钥,类似于:

<add key="MaintenanceMode" value="true" />


然后,您可以使用global.asax文件中的应用程序\u BeginRequest事件,检查密钥的值并重定向到维护页面。

我通过创建一个依赖于数据库的:ActionResultFilterAttribute并将其应用于需要DB(或更新的部分)的所有操作方法来解决这个问题。 在适当的情况下,也将其应用于某些控制器


过滤器只是检查一个值(使用注册表而不是app.config,因为它允许站点app.config进行更多的共享访问),然后重定向或调用base。

我通过创建一个依赖于数据库的:ActionResultFilterAttribute并将其应用于所有需要DB的操作方法来解决这个问题(或更新的部分)。 在适当的情况下,也将其应用于某些控制器



过滤器只是检查一个值(使用注册表而不是app.config,因为它允许比站点app.config更多的共享访问)或者重定向或调用数据库。

因此,在数据库升级过程中,不可能与网站进行交互,对吗?几乎没有。有一些静态页面和极少数依赖未更新的可用表:如果更简单,那么我宁愿重定向所有页面。但离线应用程序不仅丑陋,而且t因为我没有更新任何网站本身,有点太苛刻了。出于好奇,app_offline.htm会导致什么问题?@bamcaig:
用户
,纯粹而简单。他们看到一个页面告诉他们等待,他们等待。他们看到app_离线,然后打电话给帮助台……反复……还有电子邮件备份;)@BlueChippy:用户在这里看不到
app\u离线
。浏览器会显示请求的URL,但会提供
app_offline.htm
文件。它只是向他们解释了为什么网站不起作用,这是故意的,而且是为了让他们有耐心。:)当然,这个应用程序没有帮助台,而且大多数用户还不知道我是谁……>:)因此,在数据库升级过程中,不可能与站点进行交互,对吗?几乎没有。有一些静态页面和少数依赖于未更新的表的页面是可用的:如果更简单,那么我宁愿重定向所有页面。但是Appu offline不仅丑陋,而且因为我没有更新任何网站本身,有点太苛刻了。出于好奇,Appu offline.htm会导致什么问题?@bamcaig:
用户
,纯粹而简单。他们看到一个页面告诉他们等待,他们等待。他们看到app_离线,然后打电话给帮助台……反复……以及电子邮件备份;)@BlueChippy:用户在这里看不到
app\u离线
。浏览器会显示请求的URL,但会提供
app_offline.htm
文件。它只是向他们解释了为什么网站不起作用,这是故意的,而且是为了让他们有耐心。:)当然,这个应用程序没有帮助台,而且大多数用户还不知道我是谁……>:)我在看ActionRequestFilter——然而,尽管它可以工作,但它在不断调用自己时也会循环!这比使用app_offline.htm有什么好处?我可以让非相关页面保持运行状态,以允许访问站点,但只需拒绝访问依赖于正在更新的表的页面。我正在查看ActionRequestFilter-不过,尽管它可以工作,但它也会在不断调用自身时循环!这比使用app_offline.htm有什么好处?我可以让非依赖页面保持运行状态以允许访问站点,但只需拒绝访问依赖于正在更新的表的页面。如果数据库仍然可读(除了刷新的数据),我会将脱机标志存储在元数据表中,这样Windows服务就不需要访问注册表。我还将在我的应用程序中存储一个静态上次检查标志,这样我们就不会在每次请求时都访问数据库/注册表,而是可以每隔“n”分钟访问一次。如果数据库仍然可读(除了刷新的数据之外),我会将脱机标志存储在那里的元数据表中,这样Windows服务就不需要访问注册表。我还将在我的应用程序中存储一个静态的last time checked标志,这样我们就不会在每次请求时都访问db/注册表,而是可以每隔“n”分钟访问一次。