2010-01-08 95 views
3

Web服務正在IIS中運行。 當調用初始化服務時,爲了啓動一個wpf應用程序,動態加載了一些庫。如何從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

檢查您的應用程序池並告訴我它使用哪個用戶 - 或者如果您使用模擬。

我的第一個猜測是,它會作爲服務用戶運行(無權混亂桌面,特別是不能與您的桌面)。總的來說,我認爲這是一件奇怪的事情..

爲什麼你不使用瀏覽器應用程序中的Silverlight?爲什麼沒有ClickOnce?

+0

hummm,我不是SII ...... 的類專業,但我可以在該Web服務使用應用程序保護管理配置工具,請參閱:中等(池) 是否回答這個問題? – Francois 2010-01-08 10:38:37

+0

在Web.config文件中,我有這樣的: Francois 2010-01-08 10:42:26

+0

實際上,這個想法是在Web服務之上構建一個桌面應用程序,以在同一臺機器上本地管理業務模型。因此,爲了共享內存中的對象,Web服務必須實例化應用程序並將業務模型傳遞給它。對於性能問題,我不想在本地與Web服務通信。 – Francois 2010-01-08 12:25:39

相關問題