2013-02-28 74 views
2

我想使用的自動啓動設施,以確保我的應用程序緩存總是被填充,並準備去,如ScottGu's blog描述。我在配置它時遇到了一些問題。自動啓動ASP.NET應用程序 - 配置錯誤

該項目有冰激凌,我使用的是Windows 7的工作頭銜,IIS 7.5,ASP.NET 4.5。

在IIS中,我創建了一個新的應用程序池IceCreamPool,並且我修改了applicationHost.config,詳見博客文章。

首先:我加入了startModeAlwaysRunning上的應用程序池:

<applicationPools> 
    ... 
    <add name="IceCreamPool" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" /> 
    ... 
</applicationPools> 

接下來,我添加了serviceAutoStartEnabledserviceAutoStartProvider到應用程序:

<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#代碼?最初的博客文章令人沮喪地沒有給出最後的工作示例!

回答

1

行 - 我只是嘗試了同樣的事情,但部署到運行Windows Server 2008和IIS7的服務器,它完美地工作。

所以它必須是一些有關IIS在Windows 7上運行 - 但我很高興,它的工作在服務器上,所以 - 無後顧之憂。