2

我正在开发一个相当大的 Silverlight 4 应用程序(1 个解决方案中的 42 个项目),我正在努力解决一个非常奇怪的问题。

该应用程序在调试版本中运行良好,即使在发布版本中,它也可以在附加调试器的情况下运行 (F5),但是当它在不调试的情况下运行时,silverlight xap 会加载,然后只显示一个空白页面。

我正在处理未触发的 Application_UnhandledException,因此几乎不可能从中获取任何有用的信息,特别是因为我无法在附加调试器的情况下重现此行为。

附加调试器时,运行时有哪些可能导致此问题的差异?

编辑:我还应该补充一点,调试版本也可以在没有附加调试器的情况下运行。

4

2 回答 2

2

事实证明,问题在于发布版本执行了一些改变调用程序集的优化。

我们使用反射在 IoC 容器中注册类型,并且在调试中 Assembly.GetCallingAssembly().GetTypes() 始终返回预期的程序集。但是在发布模式下,调用程序集是生成的匿名托管 DynamicMethods 程序集,因此我们的类型没有在 IoC 容器中注册,并且应用程序在发布模式下崩溃。

解决方法是改用 this.GetType().Assembly。

使问题更加复杂的是,当 IoC 容器抛出异常时,Silverlight 只会显示一个空白页面,因此很难确定失败的原因。当然有一些方法可以改变这种行为?

于 2010-09-07T16:04:58.550 回答
1

IIS 部署中出现空白页的一个常见原因是缺少 MIME 类型定义。根据 Silverlight 应用程序的类型,必须添加以下一种或多种类型:

.xap 应用程序/x-silverlight-app .xaml 应用程序/xaml+xml .xbap 应用程序/x-ms-xbap

于 2011-10-26T09:16:39.510 回答