ScottGuのブログで説明されているように、自動起動機能を使用して、アプリケーションキャッシュに常にデータが入力され、準備ができていることを確認したいと思います。設定に問題があります。
プロジェクトのタイトルはIceCreamで、Windows 7、IIS 7.5、ASP.NET4.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 \にあったので、私が見るのに十分な長さではないのではないかと推測しています。で。
serviceAutoStartProviders
セクションを削除して<application>
要素から設定を削除startMode="AlwaysRunning"
し、アプリケーションプールにそのまま残しておけば、問題は発生しないため、C#ビットまたはserviceAutoStartProvidersの構成方法に問題があることはわかっています。
だから-何かアイデアはありますか?クラスをどのようにマッピングしますserviceAutoStartProvider
か?クラスを名前空間なし、アプリケーションの名前である名前空間(IceCreamCMS
)、およびより長い名前空間に入れてみました。すべて無駄に。
誰かが実際にこれを機能させている場合、構成とC#コードを共有できますか?元のブログ投稿はイライラして最終的な実用的な例を示していません!