2012-05-02 47 views
3

我有一个处理传入邮件的电子邮件侦听应用程序,具体取决于电子邮件所在的“Bucket”(或队列)。每个存储桶的其中一个设置是“AutoRespond”。如果AutoRespond为true,我会发送确认电子邮件回发件人。为什么我的MVC应用程序缓存这个设置?

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

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

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

+7

我认为你需要提供有关如何'myObject'及其'Bucket'属性获取填充 – GolfWolf

+0

另外,我不认为这哈的一些细节与OutputCache有关的任何事情。 – GolfWolf

+0

我知道这与OutputCache无关;我只是提到,所以人们没有提出这个建议。 – WEFX

回答

1

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

1

您也可以尝试一个web.config的应用程序设置,更改值会自动重新启动应用程序(不知道这是实际的或不适合你,但仍然另一种选择)

的web.config:

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

C#的逻辑在这里:

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

谢谢,但这很不实际。 AutoRespond是每个Bucket对象存在的数据库值。我不打算创建2打配置设置;每桶一个。 EF4应该处理这个问题。 – WEFX

相关问题