ASP.Net网站项目的程序集名称
本文关键字:程序集 项目 Net 网站 ASP | 更新日期: 2023-09-27 18:30:11
我在ASP.Net应用程序中集成了Quartz.Net用于Scheduler作业。
但它并没有自动工作,而且似乎是在IIS回收应用程序池时停止的。但当我们向服务器发送请求时会触发。
在阅读了IIS应用程序池回收+石英调度之后,我正在尝试在IIS 7.5服务器中配置相同的应用程序池以解决相同的问题。
<serviceAutoStartProviders>
<add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" />
</serviceAutoStartProviders>
然而,PreWarmCache
类已经在我的网站中定义并保留了所有逻辑,因为它使用了网站页面中的模板。
如何在type
中从网站定义此类?MyAssembly
的值是多少?
如果我的项目是web应用程序,我可以使用程序集名称。
我创建了一个网站。那么,这个值是什么,或者我应该如何配置该部分?
注意:PreWarmCache位于App_Code
目录
这与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类提供显式程序集名称?
现在修复了它,将代码取出到一个单独的程序集中,编译添加引用,现在全部完成。
强烈建议您不要在web应用程序中使用Quartz.NET。应用程序池可以并且确实可以重置。虽然它们可以被安排在特定的时间回收,但它们仍然可以在任何时候回收。这造成了不可预测的行为,很难追踪。
我强烈建议您创建一个Windows服务来处理Quartz.NET任务。它将更可预测,更易于调试,并与您的web应用程序解耦。这将消除试图始终打开应用程序池以运行服务的复杂性。
如果您仍然想在web应用程序中使用Quartz.NET,那么这个SO问题可能会有所帮助。