AutoStart eine WCF in Azure WebRole

8

Ich habe eine WCF auf Azure (WebRole) gehostet. Diese WCF macht viele Hintergrundaufgaben und Antworten auf einige Petitionen.

Das Problem ist, dass wenn der WCF lange Zeit keine Petition erhält (10 Stunden oder mehr), der Anwendungspool in der azure Instanz wiederverwendet wird und die WCF-Aufgaben gestoppt werden. Ich habe ein wenig Nachforschungen angestellt und kann eine AutoStart-Funktion aktivieren, indem ich die machine.config berühre, aber dies ist keine Option bei einer azure-Bereitstellung.

Kann ich AutoStart innerhalb von web.config aktivieren oder Konfigurationsdateien bereitstellen?

    
Jordi 04.12.2012, 13:20
quelle

2 Antworten

11

Sie können Code in der WebRole.cs hinzufügen, um den Anwendungspool zu ändern:

%Vor%

Hinweis: Um ServerManager zu verwenden, müssen Sie:

  • Verweis C: \ Windows \ system32 \ inetsrv \ Microsoft.Web.Administration.dll (oder über NuGet verfügbar)
  • Fügen Sie <Runtime executionContext="elevated" /> in Ihrer Service-Definition unter dem WebRole-Element
  • hinzu
Sandrino Di Mattia 04.12.2012, 13:30
quelle
3

Obwohl die Lösung von Sandrino funktionieren könnte ... ist hier eine Lösung, die nicht erfordert, dass die Web-Rolle im erhöhten Sicherheitsmodus ausgeführt wird und die Anwendung startet, wenn die Webrole gestartet wird (bevor der erste Benutzer die Site besucht) . Diese Lösung funktioniert auch bei älteren Versionen von IIS / Windows Server, für die die Funktion "Anwendungsinitialisierung" von IIS 8 nicht erforderlich ist.

Fügen Sie einfach eine WebRole.cs mit dem folgenden Inhalt hinzu:

%Vor%

Dank geht an: Ссылка

Die while (true) könnte durch Sandrinos Ansatz ersetzt werden, oder Sie könnten das Timeout für das Timeout im Anwendungspool deaktivieren: Ссылка

    
Thomas Jespersen 16.03.2014 17:25
quelle

Tags und Links