我尝试调试包含OpenFileDialog.ShowDialog()调用的silverlight应用程序 - 我得到有关安全性的错误异常(“SecurityException未被用户代码处理:对话框必须由用户启动”)
当我在没有调试的情况下运行应用程序时 - 我没有得到此异常。
但我必须在调试模式下运行它,因为我需要看到我使用客户选择的文件做正确的事情......
如何在调试模式下运行它?
感谢您的帮助。
答案 0 :(得分:2)
如果您是,并且我认为您是,通过单击按钮启动ShowDialog()调用,Silverlight有一些奇怪的启发式方法来确定操作是否是用户启动的。
它可以与调试一起使用,但是如果您通过Button_Click中的代码踩到ShowDialog(),它似乎认为由于延迟,它不是用户启动的操作。
为了解决这个问题,我建议使用日志记录而不是单步调试应用程序。 Silverlight因尝试调试ShowDialog()调用而抛出这些异常而臭名昭着。
的 强> 的 *修改
Silverlight不使用Click()事件来确定按钮是否是用户启动的。它使用一系列启发式方法来正确地确定它包括一个计时器(这就是调试失败的原因)
答案 1 :(得分:2)
此问题已记录在Microsoft:
将断点放在.ShowDialog()。
之后答案 2 :(得分:0)
确保在打开对话框时单击按钮触发。这样做是出于安全原因。
显然IE中存在一个错误,即使用户启动
也会导致此错误http://forums.silverlight.net/forums/p/208282/491053.aspx
Another knack on the "Dialogs must be user-initiated" Security Exception in Silverlight printing