2010-01-08 66 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

相关问题