我使用默认SQL Server存储为Hangfire. 由于每天的工作创造率可能非常高(以数十万计),因此数据库的大小也增长得非常快。
最初我认为它仍然可以,因为Succeeded一天后工作将被删除。令我惊讶的是,即使过了几天,该作业仍未从Hangfire.Jobs表中删除。
当我在 2015 年 7 月 30 日运行此查询时:
select min(ExpireAt) from Hangfire.Job
where StateName = 'Succeeded'
Run Code Online (Sandbox Code Playgroud)
我得到了2015-07-21 13:28:27.543,大约是 9 天前。
我可以自己手动删除作业或创建一个批处理作业来定期清理它,但是是否有任何情况下成功的作业在过期后仍然保留?
当我.sqlproj在 Visual Studio 解决方案中有一个 SQL Server 数据库项目 ( ) 时,我注意到每次构建解决方案时总是会构建该特定项目,即使项目文件没有更改。
这与仅在有任何文件更改时构建的普通C#项目 ( .csproj)不一致。
我试过提高msbuild输出的详细程度,它似乎总是在没有特殊原因的情况下构建该项目。
.sqlproj总是建有什么原因吗?有没有办法让它只在文件更改时构建?
我一直在使用Autofac与ASP.NET Web API和的集成ASP.NET MVC.一切似乎都运行良好,除了我对注册的对象的生命周期有一些挥之不去的怀疑SingleInstance(),更广泛地说是关于容器本身的生命周期.
例如,如果我按如下方式声明一个类:
public class Cache {
private Dictionary<int, int> _internalCache = new Dictionary<int, int>();
}
Run Code Online (Sandbox Code Playgroud)
并将其注册为容器中的单实例:
var builder = new ContainerBuilder();
builder.RegisterType<Cache>.SingleInstance();
var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)
假设我同时使用相同的container实例ASP.NET MVC和ASP.NET Web API集成,托管IIS,容器和AppDomain回收时在其下注册的实例会发生什么?内容会_internalCache怎样?如果我Cache在AppDomain回收之前和之后解决,我仍会得到相同的实例吗?
sql-server ×2
asp.net ×1
asp.net-mvc ×1
autofac ×1
csproj ×1
hangfire ×1
iis ×1
msbuild ×1
sqlproj ×1