我想使用自动启动工具来确保我的应用程序缓存始终已填充并准备就绪,如ScottGu's blog中所述。我在配置时遇到了一些问题。
该项目的标题为IceCream,我使用的是Windows 7,IIS 7.5,ASP.NET 4.5。
在IIS中,我创建了一个新的应用程序池IceCreamPool
,我修改了applicationHost.config
,详见博客文章。
首先:我在应用程序池中添加了startMode
到AlwaysRunning
:
<applicationPools>
...
<add name="IceCreamPool" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
...
</applicationPools>
接下来,我将serviceAutoStartEnabled
和serviceAutoStartProvider
添加到应用程序中:
<application path="/IceCreamCMS" applicationPool="IceCreamPool">
<virtualDirectory path="/" physicalPath="C:\Projects\IceCreamCMS\IceCreamCMS" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" />
</application>
然后我在<sites>
元素之后添加了服务自动启动提供程序:
<sites>
...
</sites>
<serviceAutoStartProviders>
<add name="PreWarmMyCache" type="IceCreamCMS.PreWarmCache, IceCreamCMS" />
</serviceAutoStartProviders>
在应用程序IceCreamCMS
中,我创建了一个名为PreWarmCache
的类,如下所示:
using System.Net.Mail;
public class PreWarmCache : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
// Perform initialisation and cache loading logic right here
SmtpClient s = new SmtpClient("webmail.example.com");
s.Send("website@example.com", "me@example.com", "Pre-warming the cache", "Hello there...");
}
}
然后我重建了应用程序,但没有收到任何电子邮件。
我执行了iisreset
以查看我是否收到了电子邮件,但iisreset
给了我一个错误:
应用程序池“IceCreamPool”的工作进程遇到了问题 错误'配置文件不是格式良好的XML'试图读取 来自文件的配置数据 '\?\ C:\ inetpub \ temp \ apppools \ IceCreamPool \ IceCreamPool.config',line 数字'3'。数据字段包含错误代码。
applicationHost.config
肯定是形成良好的,我没有做过基本的错字,我通过XML验证器进行了验证。所以,下一个显而易见的地方就是它在错误中声明的配置文件,但它不存在,所以我猜它因为它在\ temp \它没有坚持足够长的时间让我看在
我知道我的C#位或者我如何配置serviceAutoStartProviders都有问题,因为如果我删除serviceAutoStartProviders
部分并从<application>
元素中删除设置,只留下在应用程序池上startMode="AlwaysRunning"
,然后我没有遇到任何问题。
那么 - 任何想法?你如何根据serviceAutoStartProvider
映射你的课程?我试过让我的类没有名称空间,名称空间是应用程序的名称(IceCreamCMS
)和更长的名称空间;一切都无济于事。
如果有人真的有这个工作,你能分享你的配置和C#代码吗?令人沮丧的原始博客文章没有提供最终的工作示例!
答案 0 :(得分:1)
好的 - 我刚刚尝试了完全相同的东西,但部署到运行Windows Server 2008和IIS7的服务器上,并且它运行良好。
所以它必须是关于在Windows 7上运行的IIS的东西 - 但我很高兴它在服务器上工作,所以 - 不用担心。