代码之家  ›  专栏  ›  技术社区  ›  herzmeister

Silverlight打印中“对话框必须由用户启动”安全异常的另一个技巧

  •  2
  • herzmeister  · 技术社区  · 14 年前

    Silverlight printing "Dialogs must be user-initiated" Security Exception

    John Papa couldn't help me much out neither ,因为我没有设置任何断点。 Mr MSDN thinks it could also be that I'm just taking too long

    有什么想法吗?我想这是Visual Studio的一个怪癖,可能是一些扩展干扰了,因为当我在它之外启动应用程序时,事情似乎是正常的。我最初以为代码契约可能干扰了它们的IL编织,但是对于这个项目,它们被停用了。

    更新:这只是一个简单的Silverlight应用程序,从文件系统本地运行。当我“开始调试”时,Visual Studio会在Debug resp中创建一个包含Silverlight应用程序的宿主HTML文件。释放项目的文件夹,启动带有该HTML文件的Internet Explorer并将调试器附加到它。

    更新2:当我创建一个web项目来托管Silverlight应用程序并在IIS上为其创建虚拟目录时,也会遇到同样的错误。

    我可能还想补充一点,在其他Silverlight项目中,不管它们的宿主场景如何,我都不会有打印问题。

    更新3:我下载了FireFox并且它可以工作,当我用它调试的时候没有得到错误。所以这似乎和我的IE8有关。我上传了解决方案:

    http://dl.dropbox.com/u/10401470/Code/Demos/PrintingDemo.zip

    我想知道是否有人可以复制?

    有人知道我应该向哪个团队提交错误报告吗?Silverlight团队?IE团队?VS调试器团队?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Chui Tey    13 年前

    我可以复制这个。您已经处理了两次单击,一次是在XAML中,另一次是在代码中。查看主页.xaml

    <Button x:Name="PrintButton"
       Content="Gotta print 'em!" Margin="8" 
       Click="PrintButton_Click" />
    

        2
  •  1
  •   AnthonyWJones    14 年前

    我也经历过这种奇怪的行为。立即调用 OpenFileDialog . 在调试时,它经常会产生相同的错误,但当按钮被多次单击时,它最终会被诱使工作。

    然而,当构建为一个发行版时(或者仅仅通过运行同一个Xap而不将调试器附加到浏览器),问题就会消失。

        3
  •  1
  •   Felix Yan    13 年前

    尝试删除

    if(SightPaleceListBox.Items.Count > 0)

        4
  •  0
  •   Mr.Wizard naktepe    13 年前

    我也有同样的问题,发现原因如下:

    cnvsMain.Children.Remove(PrintPagePlaceHolder);
    

    我的小贴士:试着一行一行地注释,直到找到导致问题的行。而不是试图解决它。