【问题标题】:How to debug silverlight application with OpenFileDialog?如何使用 OpenFileDialog 调试 silverlight 应用程序?
【发布时间】:2011-03-01 08:32:13
【问题描述】:

我尝试调试包含 OpenFileDialog.ShowDialog() 调用的 silverlight 应用程序 - 我收到有关安全性的错误异常(“SecurityException 未被用户代码处理:对话框必须由用户启动”)

当我在没有调试的情况下运行应用程序时 - 我没有得到这个异常。

但我必须在调试模式下运行它,因为我需要看到我对客户选择的文件做了正确的事情......

如何在调试模式下运行它?

感谢您的帮助。

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    如果您是(我假设您是)通过单击按钮启动 ShowDialog() 调用,Silverlight 有一些奇怪的启发式方法来确定该操作是否是用户启动的。

    它确实适用于调试,但如果您是单步执行从 Button_Click 到 ShowDialog() 的代码,它似乎认为由于延迟,它不是用户发起的操作。

    为了解决这个问题,我建议使用日志记录而不是单步调试应用程序。 Silverlight 因在尝试调试 ShowDialog() 调用时抛出这些异常而臭名昭著。

    *编辑

    Silverlight 不使用 Click() 事件来确定按钮是否是用户启动的。它使用大量启发式方法来正确确定它,包括一个计时器(这就是调试失败的原因)

    【讨论】:

    • 你的意思是像“附加到进程”一样调试它吗?
    • 如何调试如你所说?你是什​​么意思'使用日志记录而不是单步调试应用程序'?
    • 哦,对了。是的,我的意思是放置 debug.writeline 或其他类型的日志记录,而不是单步执行代码
    【解决方案2】:

    【讨论】:

    • 我把我的 beackpoint 放在 showDialog() 之后 - 它没有解决问题。
    【解决方案3】:

    确保当您打开对话框时,它是由单击按钮触发的。这样做是出于安全原因。

    编辑

    显然 IE 中存在一个错误,即使在用户启动时也会导致此错误

    http://forums.silverlight.net/forums/p/208282/491053.aspx

    Another knack on the "Dialogs must be user-initiated" Security Exception in Silverlight printing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多