Thomas

Thomas

  • NA
  • 1
  • 0

Security issue; need to print using ActiveX

May 20 2005 10:24 AM
I am trying to create an activeX object that would allow me to do silent printing from a web page (printing without the user pressing any button). I have created an ActiveX object (or the equivalent of it) in C# using a tutorial from this fine site. It works great. I then added some code to it to test the printing functionality. Essentially, to test things, I have a web page with an tag instantiating the ActiveX, which works fine. There's an HTML button that calls the Print() function when pressed. Right now, when I press it I get the following error (in javascript): Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed This error occurs when I try to assert PrintingPermission as you will see in the code below. I've made the site the control runs on a trusted site and used the .NET Configuration Tool to give full trust to the Trusted Zone. It's still giving me the error. I tried to sign the control, I'm still unsure as to whether I did it right. Anyway, the code is below, any help is appreciated. Thomas P.S. Some autogenerated code is not included below, probably doesn't make a difference as far as understanding the problem. using System; using System.Drawing; using System.Drawing.Printing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Security; using System.Security.Permissions; namespace ActiveXDotNet { public interface AxMyControl { void Print(); } /// /// Summary description for myControl. /// public class myControl : System.Windows.Forms.UserControl, AxMyControl { private PrintDocument printDoc = new PrintDocument(); public void Print() { new PrintingPermission(PermissionState.Unrestricted).Assert(); printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage); printDoc.Print(); PrintingPermission.RevertAssert(); } private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, 0, 0); } } }

Answers (1)