我想使用的自動啓動設施,以確保我的應用程序緩存總是被填充,並準備去,如ScottGu's blog描述。我在配置它時遇到了一些問題。自動啓動ASP.NET應用程序 - 配置錯誤
該項目有冰激凌,我使用的是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("[email protected]", "[email protected]", "Pre-warming the cache", "Hello there...");
}
}
我然後重建應用程序,但沒有電子郵件是即將到來的。
我執行的iisreset
,看看我收到一封電子郵件,然後,但iisreset
給了我一個錯誤:
The worker process for application pool 'IceCreamPool' encountered an error 'Configuration file is not well-formed XML ' trying to read configuration data from file '\?\C:\inetpub\temp\apppools\IceCreamPool\IceCreamPool.config', line number '3'. The data field contains the error code.
有applicationHost.config
絕對是良好的,我還沒有做出一個基本的錯字,我跑它通過一個XML驗證器來確認。所以,下一個顯而易見的地方就是它在錯誤中聲明的配置文件,但它不存在,所以我猜測它是因爲它在\ temp \中,它不會長時間粘在我看來在。
我知道有一個問題,無論是我的C#位,或者我是如何配置的serviceAutoStartProviders,因爲如果我刪除serviceAutoStartProviders
部分,並從<application>
元素中刪除的設置,在應用程序池只留下startMode="AlwaysRunning"
,然後我沒有問題。
那麼 - 任何想法?你如何將你的班級映射到serviceAutoStartProvider
?我試過讓我的類沒有名字空間,名稱空間是應用程序的名稱(IceCreamCMS
)和更長的名稱空間;一切都無濟於事。
如果任何人實際上得到了這個工作,你能分享你的配置和C#代碼?最初的博客文章令人沮喪地沒有給出最後的工作示例!