我有两个在同一服务器上运行并共享同一数据库的ASP.NET应用程序。一种是用MVC开发的前端,它缓存数据以避免数据库调用来检索相同的对象。另一个是使用WebForms开发的后端,用于管理CRUD操作。

发生后端操作时,我想使前端缓存无效。我不需要完善的机制...后端将仅偶尔使用,并且可能会使所有缓存的对象无效。

我遇到过一些解决方案,但是它们不是很干净的解决方案……例如,使用共享配置文件在数据库设置表上放置标志,从后端应用程序调用前端Web服务。每次调用前端页面时都需要应用每种解决方案,因此我需要它尽可能减少资源消耗。

我不想使用memcached或AppFabric或类似的文件,因为我认为这些文件对于我的基本需求而言过于严格。

非常感谢你!

最佳答案

您可以执行使缓存无效的操作。您可以将其传递给秘密令牌,以检查请求是否来自其他Web应用程序以确保安全。

所以它看起来像这样:

public ActionResult Invalidate(string key)
{
    if (key == ConfigurationManager.AppSettings["ApplicationSecurityKey"])
    {
        _cacheService.Invalidate();
        return Content("ok");
    }
    return null;
}


在两个项目的两个web.config文件中,您都将拥有:

<appSettings>
    <add key="ApplicationSecurityKey" value="SomeVerySecureValue" />
</appsettings>


您可以像这样从其他Web应用程序调用它:

WebClient client = new WebClient();
client.QueryString.Add("key", ConfigurationManager.AppSettings["ApplicationSecurityKey"]);
string response = client.DownloadString(url)

10-01 15:53
查看更多