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目录

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

这与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问题可能会有所帮助。