【问题标题】:Silverlight 4 application shows blank page in release buildSilverlight 4 应用程序在发布版本中显示空白页
【发布时间】:2010-09-07 02:56:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# silverlight-4.0 release-mode


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1。很好的发现和跟进。这个问题/答案肯定对以后遇到问题的其他人有用。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 2021-01-12
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多