【发布时间】:2013-12-05 11:33:32
【问题描述】:
所以在 App_Start 下的我的 FilterConfig.cs 中,我有这段代码:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
var enableFilter = ConfigurationManager.AppSettings["EnableLogActionFilter"];
if (!string.IsNullOrWhiteSpace(enableFilter)
&& enableFilter.Trim().Equals("true", StringComparison.InvariantCultureIgnoreCase))
{
filters.Add(new LogActionFilter());
}
}
在 Web.Config 中,我在 AppSettings 下有一个条目,我有一个键 EnableLogActionFilter 可以打开或关闭该功能。
当我通过 IIS Express 在我的本地机器上运行网站时,会获取更改,Application_Start 在 Global.asax.cs 中触发,并且 FilterConfig 将 MVC 操作过滤器添加到全局操作过滤器,并且工作正常。
但是,当我在本地 IIS 下运行时,更改会从 Web.Config 中获取,但 Application_Start/FilterConfig 不会再次触发?我尝试回收应用程序池,但没有帮助。
同样的事情发生在部署服务器上。更改可以在 IIS 中网站的配置编辑器部分中看到,但未添加 MVC 操作过滤器,因为没有生成日志条目。部署服务器的事件查看器中也没有记录异常。有没有人遇到过这个?我在这上面花了 2 个小时,但没有得到任何结果。
【问题讨论】:
-
您的应用程序在它自己的文件夹中运行,它有自己的应用程序池?
appcmd list site和appcmd list app输出什么? (appcmd 位于文件夹 %windir%\system32\inetsrv) -
是的,拥有自己的应用程序池。发现了问题。我在数据库配置表中缺少一个配置条目。干杯! :)
标签: c# asp.net asp.net-mvc asp.net-mvc-4 iis