2

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>

次に、とをアプリケーションに追加しまし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("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#コードを共有できますか?元のブログ投稿はイライラして最終的な実用的な例を示していません!

4

1 に答える 1

1

OK - まったく同じことを試してみましたが、Windows Server 2008 と IIS7 を実行しているサーバーに展開したところ、完全に機能しました。

つまり、Windows 7 で実行されている IIS に関するものに違いありませんが、サーバー上で動作していることに満足しているので、心配はいりません。

于 2013-02-28T16:01:28.800 に答える