为什么我的MVC应用程序会缓存此设置?

时间:2012-05-02 20:14:52

标签: asp.net-mvc-3 caching entity-framework-4

我有一个电子邮件监听应用程序,可以处理收到的邮件,具体取决于电子邮件所在的“Bucket”(或队列)。每个存储桶的一个设置是“AutoRespond”。如果AutoRespond为true,我会向发件人发回确认电子邮件。

但是,当我更改AutoRespond设置时,它似乎没有生效。我很熟悉在控制器上设置OutputCache,但下面的逻辑来自我的电子邮件侦听服务cs文件。

if (myObject.Bucket.AutoRespond)
{
    SendEmailConfirmation(someArgs);
}

这个if语句仍在评估为True,即使我在数据库中看到它设置为False。如果我重新启动我的电子邮件侦听服务,一切都很好,这个if语句正确评估。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题可能是在应用程序启动时从数据库中读取设置...然后可能它们存储在静态变量或应用程序状态字典中。如果是这种情况,您可以通过编写更改设置后的管理页面来解决此问题,强制从数据库重新加载设置。

答案 1 :(得分:1)

您还可以尝试使用web.config应用程序设置,更改值会自动重新启动应用程序(不确定这是否适用于您,但仍然是另一个选项)

web.config:

<appSettings>
    <add key="AutoRespond" value="true" />
</appSettings>

c#logic here:

bool autoRespond = false;
bool.TryParse(System.Configuration.ConfigurationManager.AppSettings["AutoRespond"], out autoRespond);