簡體   English   中英

如何從Web服務啟動WPF應用程序?

[英]How to start a WPF application from a web service?

一個Web服務正在運行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();
   }

但是,如果我從Web服務運行它,代碼正確執行(因為我可以調試它,沒有例外)但窗口永遠不會顯示:

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

我可以在進程管理器中看到WPF進程正在運行...任何想法為什么窗口沒有出現?

問候,

弗朗索瓦


是否有特殊要做的事情來授予Web服務所有訪問/權限?

檢查您的應用程序池並告訴我它使用的用戶 - 或者您是否使用模擬。

我的第一個猜測是,它作為一個服務用戶運行(沒有權利搞亂桌面,特別是你的桌面沒有)。 總的來說,我認為這是一件奇怪的事情。

為什么不在瀏覽器應用程序中使用Silverlight? 為什么沒有ClickOnce?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM