AutoStart/Pre-warm-features in IIS 7.5 / WCF-Dienst

Für die Prüfung der vielen Kopfschmerzen IIS/WCF-Implementierung von Grund auf, baute ich die HelloWorld-service-und client liefen durch (sehr schön) hier. Ich fügte hinzu, Endpunkte für Netto.tcp, und der Dienst einwandfrei funktioniert Ende-zu-Ende-für beide Bindungen unter IIS 7.5 (auf Windows 7) in seiner eigenen ApplicationPool namens HW.

Was ich versuche zu bekommen, arbeiten ist angesagt AutoStart und Vorspannung (oder "pre-warm-caching") Merkmale. Ich habe die Anweisungen befolgt gelegt hier und hier (ziemlich ähnlich zu einem anderen, aber immer gut, eine zweite Meinung) sehr eng. Was bedeutet, dass ich

1) Legen Sie den Anwendungspool startMode...

<applicationPools> 
     <!-- ... -->
     <add name="HW" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" /> 
</applicationPools>

2) ...aktiviert serviceAutoStart und setzen Sie einen Zeiger auf meine serviceAutoStartProvider

<site name="HW" id="2">
    <application path="/" applicationPool="HW" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" />
    <!-- ... -->
</site>

3) ...und mit Namen sagte-Anbieter, mit der GetType().AssemblyQualifiedName von der Klasse aufgeführt, die in Ihrer Gesamtheit unter

<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();
        }
    }
}

Ach, alle diese manuelle Konfiguration, plus ein paar iisreset Anrufe, und ich bekomme nichts. Keine w3wp.exe Prozess anheizen, die im Task-Manager (wenn ich es bekomme, wenn ich starten Sie die HelloWorldClient), keine text-Datei, und vor allem, keine Zufriedenheit.

Es ist frustrierend geringen Menge der Diskussion über diese Funktion, entweder auf SO oder die breitere web, und die paar ähnliche Fragen hier bekam wenig Aufmerksamkeit, alle, die Ringen eine alarm Glocke oder zwei. Vielleicht unnötig aber-keine Experten da draußen, die sich dieser Straße eine Zeit oder zwei Pflege zu läuten? (Gerne bieten bis die gesamte Lösung, wenn Sie können schlagen ein guter Ort, um host-it.)


BEARBEITEN: ich habe versucht, zurücksetzen, dass der Pfad in der Preload Methode, um die relative App_Data Ordner (eine andere Antwort vorgeschlagen, dass), egal. Auch habe ich gelernt, die w3wp.exe Prozess feuert auf ein einfaches navigieren Sie zu dem "localhost". Der Prozess verbraucht eine beeindruckende 17MB Speicher zu dienen, bis seine einzigen winzigen OperationContract, während es für den Preis anbietet null Vorspannung Wert. 17MB von ColdDeadCache.

  • gibt es irgendwelche Hinweise im Ereignisprotokoll? Alle Ausnahmen sollten dort auftauchen.
  • Nein, nichts. Nicht sicher, warum Sie erwarten würden, eine Ausnahme, wenn (wie gesagt) der service funktioniert gut.
  • Ein paar Dinge, die Sie könnte prüfen: - Ist die id Ihrer site 2? - Ist es korrekt, dass Sie den Namen Ihrer Website und den Anwendungspool identisch sind? - Sie haben angegeben, mehr Attribute als die Beispiele, nicht nur die Angabe der in den Beispielen einen Unterschied machen?
InformationsquelleAutor downwitch | 2012-05-06
Schreibe einen Kommentar