Как запустить приложение WPF из веб-службы? - PullRequest
3 голосов
/ 08 января 2010

веб-сервис работает с IIS. При вызове службы инициализации некоторые библиотеки загружаются динамически для запуска приложения wpf.

Код компилируется, запускается ... но окно никогда не появляется. Никаких исключений не выбрасывается.

Ниже приведен код, который выполняется для создания приложения 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);
        }
}

Если я запускаю это в консольном приложении, оно отлично работает:

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

Но если я запускаю его из веб-службы, код выполняется правильно (так как я могу отлаживать его, без исключений), но окно никогда не появляется:

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

В диспетчере процессов видно, что процесс WPF выполняется ... Есть идеи, почему окно не отображается?

С уважением,

Francois


Есть ли что-то особенное, чтобы предоставить все права доступа к веб-службе?

1 Ответ

1 голос
/ 08 января 2010

Проверьте ваш пул приложений и скажите мне, какого пользователя он использует - или, если вы используете олицетворение.

Мое первое предположение заключается в том, что он работает как пользователь службы (без прав на работу с рабочим столом и особенно с вашим рабочим столом). В общем, я думаю, что это странная вещь ..

Почему вы не используете Silverlight вне браузера? Почему нет ClickOnce?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...