我想在我工作的软件的每个页面上运行网站和数据库之间的版本一致性检查,以查看其中一个是否不同步。 (背景:有人可以在用户使用软件时升级,因此将检查限制在登录页面是不现实的 - 也就是为什么在软件的任何页面上都需要检查。)
我无法控制部署,因为客户自己在自己的硬件上托管软件。
前端是asp.net页面和MVC4的混合体(逐渐用MVC替换aspx页面),所以我不能简单地在内部和外部基页中对Page_Load()
运行检查。然后我们的MVC页面有不同的东西 - 我宁愿不为每种页面类型重复代码。
环顾四周,我看到MVC存在的过滤器可能是这些页面的选项。
我一直在调查HttpHandlers,理论上可以将请求限制为页面加载而不是静态内容。
是否有替代/更好的方法来执行此服务器端检查,哪些代码只在一个地方,并会影响aspx页面和MVC?
答案 0 :(得分:1)
根据通过检查时应该执行的操作或检查失败,您可以设置新控制器Version
并执行操作Check
public class Version : Controller
{
public JsonResult Check() {
return new Json((GetWebsiteVersionNumber() == GetDatabaseVersionNumber()));
}
}
然后,您可以使用_Layout或其他视图中的@ Html.Action从MVC调用此端点并进行相应的响应。在Web窗体端,您可以使用服务器端WebRequest类调用此端点,并根据MasterPage PageLoad事件或您喜欢的任何其他位置的响应采取适当的操作。
此外,您可以从一个常见的javascript文件调用端点(包括在WebForms和MVC客户端包括),并使用AJAX请求获取响应并在那里处理它。
原谅语法错误,因为我正在写这篇文章。