Nach meinem Kommentar zu Ihrer Frage ....
Wenn Sie beim ersten Verbinden eines bestimmten Clients mit dem Web-Service "Initialisierung" benötigen: Haben Sie eine "Initialize" -Methode, die ein Token, wie z. B. eine GUID, zurückgibt, die dann bei jedem Aufruf der aktuellen "does the work" -Methode Ihres Webdienstes benötigt wird. Sie können dann sicherstellen, dass der Service für diesen Client immer initialisiert wird.
Wenn Sie es das erste Mal benötigen, dass der Web-Service jemals aufgerufen wird: Fügen Sie Ihrem Dienst als private Methode einen Code hinzu, der am Anfang jeder öffentlichen Methode aufgerufen wird. Darin überprüfen Sie, ob etwas vorhanden ist, z. B. ein Registrierungseintrag, eine Datei, ein Datenbankeintrag oder ein anderer dauerhafter Wert. Wenn es nicht existiert, führen Sie Ihre Initialisierung durch und erstellen Sie dann das "Etwas".
Wenn Sie es beim ersten Aufruf benötigen, seit IIS den Anwendungspool zuletzt recycelt / gestartet hat: Haben Sie einen statischen Konstruktor für die Klasse, sodass der statische Konstruktor bei der ersten Instanziierung ausgeführt wird und Ihre Initialisierung durchführt.
Wenn Sie versuchen, eine Ressource zu initialisieren, die vom Webdienst verwendet wird, und Sie diese nur einmal pro Anwendung initialisieren möchten, können Sie das Ereignis Application_Start für Global.asax verwenden. Beachten Sie, dass IIS den Anwendungspool immer dann wiederverwendet, wenn der Anwendungspool zu viele Ressourcen verbraucht.
Wenn Sie eine Variable auf Klassenebene initialisieren müssen, können Sie dies im Konstruktor des Web-Service tun. Ich würde das empfehlen, weil Ihr Web-Service staatenlos sein sollte. Wenn Sie eine statische Ressource einmal in Ihrem Webdienst initialisieren müssen, können Sie einen statischen Konstruktor verwenden.
Wenn Sie eine einzelne Ressource benötigen, die in Ihrer gesamten Anwendung einmal verfügbar ist, würde ich Ihnen empfehlen, sich das Singleton-Muster anzusehen.
Wenn Sie in Visual Studio eine WebService-Anwendung erstellen, wird standardmäßig eine Klasse namens "Service" hinzugefügt. Wenn Sie sich den Code für diese Klasse (Service.cs) ansehen, sehen Sie einen Konstruktor ("public Service ()") mit zwei auskommentierten Zeilen. Sie können entweder Ihren Initialisierungscode hier eingeben oder eine private Methode aufrufen, die Sie in der Klasse Service definiert haben. Dieser Konstruktor wird nur aufgerufen, wenn Ihr Client zum ersten Mal einen WebMethode in der Service-Klasse aufruft.
Tags und Links .net c# initialization web-services