使用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服务所有访问/权限?
答案 0 :(得分:1)
检查您的应用程序池并告诉我它使用的是哪个用户 - 或者您是否使用模拟。
我的第一个猜测是,它作为服务用户运行(无权使用桌面,尤其是您的桌面)。总的来说,我认为这是一件奇怪的事情。
为什么不在浏览器应用程序中使用Silverlight?为什么没有ClickOnce?