ASP.Net网站项目的程序集名称

时间:2013-09-04 09:17:28

标签: c# asp.net iis .net-assembly

我在ASP.Net应用程序中为Scheduler作业集成了Quartz.Net

但它不能自动运行,并且似乎在IIS回收应用程序池时它已停止。但是当我们向服务器发送请求时会触发。

阅读IIS app pool recycle + quartz scheduling之后,我试图在IIS 7.5服务器中配置相同的内容。

<serviceAutoStartProviders> 
   <add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" /> 
</serviceAutoStartProviders> 

然而,PreWarmCache类已在我的网站中定义并保留所有逻辑,因为它使用网站页面中的模板。

如何在type的网站上定义此课程? MyAssembly的价值是多少?

如果我的项目是Web应用程序,我可以使用程序集名称。

我创建了网站。那么可能是什么价值或我应该如何配置该部分呢?

注意: PreWarmCache位于App_Code目录下

2 个答案:

答案 0 :(得分:0)

强烈建议您在Web应用程序中使用Quartz.NET。应用程序池可以并且确实可以重置。虽然它们可以安排在某些时间回收,但它们仍然可以随时回收。这会产生不可预测的行为,并且难以追踪。

我强烈建议您创建一个Windows服务来处理Quartz.NET任务。它将更易于预测,更易于调试,并与Web应用程序分离。这将消除尝试始终保持应用程序池运行服务的复杂性。

如果您仍想在Web应用程序中使用Quartz.NET,那么this SO question可能有所帮助。

答案 1 :(得分:0)

这与Quartz.Net无关,而是与IIS服务器在一段时间不活动后回收应用程序池有关。

我遇到了同样的问题,但我要做的就是缓存数据。

所以我需要在applicationHost.config文件中执行以下操作:

<serviceAutoStartProviders> 
   <add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" /> 
</serviceAutoStartProviders> 

然后调用一个填充XML文档的函数,并将其作为查找表存储在缓存中,以便在需要时使用。

问题是,如果我使用AssemblyQualifiedName属性,它会为我的类返回以下内容:

MyApp.PreWarmCache, App_Code.<#########>, Version=0.0.0.0, Culture=neutral, PublickKeyToken=null

#########是的,每次编译代码时都会更改。

我不想将其分成DLL,因为这会导致必须复制代码。

所以问题仍然是一样的。

我/我们可以为动态编译的ASP.NET网站的App_Code类提供显式的程序集名称吗?

现在修复它,将代码放入一个单独的程序集中,编译添加引用,现在全部完成。