如何从Web服务启动WPF应用程序?

时间:2010-01-08 10:03:54

标签: c# wpf web-services

使用IIS运行Web服务。 调用初始化服务时,会动态加载某些库以启动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();
   }

但是,如果我从Web服务运行它,代码正确执行(因为我可以调试它,没有例外),但窗口永远不会出现:

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

我可以在进程管理器中看到WPF进程正在运行...知道窗口没有出现的原因吗?

此致

弗朗索瓦


是否有一些特殊的事情可以授予Web服务所有访问/权限?

1 个答案:

答案 0 :(得分:1)

检查您的应用程序池并告诉我它使用的是哪个用户 - 或者您是否使用模拟。

我的第一个猜测是,它作为服务用户运行(无权使用桌面,尤其是您的桌面)。总的来说,我认为这是一件奇怪的事情。

为什么不在浏览器应用程序中使用Silverlight?为什么没有ClickOnce?