IIS / WCF実装の多くの問題を最初からテストするために、HelloWorldサービスを構築し、クライアントがここで(非常にうまく)ウォークスルーしました。net.tcpのエンドポイントを追加しましたが、サービスは、 HWと呼ばれるIIS 7.5
独自の(Windows 7の)両方のバインディングに対してエンドツーエンドで適切に機能しています。ApplicationPool
私が機能させようとしているのは、発表されたAutoStartおよびPreload(または「プリウォームキャッシング」)機能です。私はこことここに示されている指示に従いました(互いに非常に似ていますが、セカンドオピニオンを持っていることは常に良いことです)。つまり私は
1)アプリケーションプールを設定しますstartMode
...
<applicationPools>
<!-- ... -->
<add name="HW" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
</applicationPools>
2)...有効serviceAutoStart
にして、ポインタを自分に設定しますserviceAutoStartProvider
<site name="HW" id="2">
<application path="/" applicationPool="HW" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" />
<!-- ... -->
</site>
3)...そしてそのプロバイダーに名前を付けGetType().AssemblyQualifiedName
、クラスの全体を以下にリストします
<serviceAutoStartProviders>
<add name="PreWarmMyCache" type="MyWCFServices.Preloader, HelloWorldServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</serviceAutoStartProviders>
using System;
namespace MyWCFServices
{
public class Preloader : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\temp\PreloadTest.txt");
sw.WriteLine("Preload executed {0:G}", DateTime.Now);
sw.Close();
}
}
}
残念ながら、このすべての手動構成に加えて、いくつかのiisreset
呼び出しがあり、何も得られません。タスクマネージャーでプロセスが起動することはなくw3wp.exe
(HelloWorldClientを起動すると取得できますが)、テキストファイルも、何よりも満足のいくものではありません。
SOまたはより広いウェブのいずれかで、この機能についてのイライラするほどの議論はほとんどなく、ここでのいくつかの同様の質問はほとんど注目されませんでした。おそらく不必要ですが、この道を1、2回気にかけていた専門家はいますか?(ソリューションをホストするのに適した場所を提案できる場合は、ソリューション全体を提供できれば幸いです。)
編集:メソッド内のそのパスをPreload
相対App_Data
フォルダーにリセットしようとしました(別のSOの回答が示唆しています)、問題ではありませんでした。w3wp.exe
また、ローカルホストへの単純な参照でプロセスが起動することも学びました。このプロセスは、17 MBのメモリを消費して、単一の小さなOperationContractを提供しますが、価格はゼロのプリロード値を提供します。17MBのColdDeadCache。