2010-01-08 6 views
3

Un service Web fonctionne avec IIS. Lors de l'appel du service initialize, certaines bibliothèques sont chargées dynamiquement afin de démarrer une application wpf.Comment démarrer une application WPF à partir d'un service Web?

Le code compile, s'exécute ... mais la fenêtre ne s'affiche jamais. Aucune exception n'est émise.

Ci-dessous le code qui est exécuté pour créer l'application WPF:

public void Start() 
{ 
ThreadStart ts = Run; 
     Thread t = new Thread(ts); 
     t.SetApartmentState(ApartmentState.STA); 
     t.Start(); 
} 

[STAThread] 
public void Run() 
{ 
try 
     { 
     App app = new App(); 
       MainWindow w = new MainWindow(); 
       w.Show(); 
       app.Run(w); 
     } catch (Exception e) 
     { 
     LogManager.GetLogger("general").Debug(e.StackTrace); 
     } 
} 

Si je cours que dans une application de la console, il fonctionne parfaitement:

static void Main(string[] args) 
    { 
     MyApplication app = new MyApplication(); 
     app.Start(); 
     Console.ReadKey(); 
    } 

Mais si je le lance à partir le service Web, le code est correctement exécuté (comme je peux le déboguer, et aucune exception) mais la fenêtre n'apparaît jamais:

public void initialize() { 
IMyApplication application = assembly.CreateInstance(namespaceValue + ".MyApplication") as IMyApplication; 
     application.Start(); 
} 

Je peux voir dans le gestionnaire de processus que le processus WPF est en cours d'exécution ... Une idée de la raison pour laquelle la fenêtre n'apparaît pas?

Cordialement,

Francois


Y at-il quelque chose de spécial à faire pour accorder à tous les accès/rigths au service Web?

Répondre

1

Vérifiez votre pool d'applications et indiquez-moi quel utilisateur il utilise ou si vous utilisez l'emprunt d'identité. Ma première supposition serait que cela fonctionne comme un utilisateur de service (avec aucun droit de jouer avec un bureau et surtout pas avec votre bureau). En général, je pense que c'est une chose étrange à faire ..

Pourquoi n'utilisez-vous pas une application Silverlight hors navigateur? Pourquoi pas ClickOnce?

+0

hummm, je ne suis pas un specialit de ... Mais SII je peux voir dans l'outil de configuration d'administration que le service Web utilise la protection Application: Moyen (Pooled) -t-il répondre à la question? – Francois

+0

Dans le fichier Web.config, j'ai ceci: Francois

+0

En fait, l'idée est de construire sur le web service une application de bureau pour gérer le business model localement sur la même machine. Ainsi, pour partager les objets en mémoire, le service Web doit instancier l'application et lui transmettre le modèle métier. Pour les problèmes de performances, je ne souhaite pas communiquer localement avec le service Web. – Francois

Questions connexes