Esta documentación está archivada y no tiene mantenimiento.

AllowPartiallyTrustedCallersAttribute (Clase)

Actualización: noviembre 2007

Permite que un código de confianza parcial llame a ensamblados con nombre seguro. Sin esta declaración, sólo los llamadores de plena confianza pueden utilizar estos ensamblados. Esta clase no puede heredarse.

Espacio de nombres:  System.Security
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false, 
	Inherited = false)]
public sealed class AllowPartiallyTrustedCallersAttribute : Attribute
/** @attribute ComVisibleAttribute(true) */
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false) */
public final class AllowPartiallyTrustedCallersAttribute extends Attribute
public final class AllowPartiallyTrustedCallersAttribute extends Attribute

AllowPartiallyTrustedCallersAttribute sólo es efectivo cuando lo aplica un ensamblado con nombre seguro en el nivel de ensamblado. Para obtener más información sobre cómo aplicar atributos en el nivel de ensamblado, vea Aplicar atributos.

De forma predeterminada, un ensamblado con nombre seguro que no aplica explícitamente este atributo de nivel de ensamblado para que el código de confianza parcial pueda utilizarlo sólo puede ser llamado por otros ensamblados a los que la directiva de seguridad concede confianza plena. Esta restricción se aplica colocando una LinkDemand de FullTrust en cada método público o protegido de cada clase de acceso público del ensamblado. Los ensamblados que van a ser llamados por código de confianza parcial pueden declarar su intención mediante AllowPartiallyTrustedCallersAttribute. El atributo se declara en el nivel de ensamblado. Un ejemplo de la declaración en C# es [assembly:AllowPartiallyTrustedCallers] y en Visual Basic es <assembly:AllowPartiallyTrustedCallers>.

d18a6dca.alert_caution(es-es,VS.90).gifPrecaución:

La presencia de este atributo de nivel de ensamblado evita el comportamiento predeterminado que coloca marcas de seguridad FullTrust  LinkDemand, lo que permite que otros ensamblados (de confianza parcial o total) puedan llamar al ensamblado.

Si este atributo está presente, todas las marcas de seguridad funcionan como está previsto, incluidos los atributos de seguridad declarativa en el nivel de clase o de método. Este atributo sólo bloquea la solicitud implícita del llamador de plena confianza.

Éste no es un atributo de seguridad declarativa, sino un atributo regular (se deriva de Attribute, no de SecurityAttribute).

Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.

En el siguiente ejemplo se muestra la forma de utilizar la clase AllowPartiallyTrustedCallersAttribute.

// The following HTML code can be used to call the user control in this sample.
//
//<HTML>
//	<BODY>
//		<OBJECT id="usercontrol" classid="usercontrol.dll#UserControl.UserControl1" width="800"
//		height="300" style="font-size:12;">
//		</OBJECT>
//		<p>
//	</BODY>
//</HTML>

// To run this test control you must create a strong name key, snkey.snk, and 
// a code group that gives full trust to assemblies signed with snkey.snk.

// The user control displays an OpenFileDialog box, then displays a text box containing the name of 
// the file selected and a list box that displays the contents of the file.  The selected file must 
// contain text in order for the control to display the data properly.

// Caution  This sample demonstrates the use of the Assert method.  Calling Assert removes the 
// requirement that all code in the call chain must be granted permission to access the specified 
// resource, it can open up security vulnerabilities if used incorrectly or inappropriately. Therefore, 
// it should be used with great caution.  Assert should always be followed with a RevertAssert 
// command to restore the security settings.


using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Reflection;
using System.Runtime.CompilerServices;

// This strong name key is used to create a code group that gives permissions to this assembly.
[assembly: AssemblyKeyFile("snKey.snk")]
[assembly: AssemblyVersion("1.0.0.0")]

// The AllowPartiallyTrustedCallersAttribute requires the assembly to be signed with a strong name key.
// This attribute is necessary since the control is called by either an intranet or Internet
// Web page that should be running under restricted permissions.
[assembly:AllowPartiallyTrustedCallers]
namespace UserControl
{
	// The userControl1 displays an OpenFileDialog box, then displays a text box containing the name of 
	// the file selected and a list box that displays the contents of the file.  The selected file must 
	// contain text in order for the control to display the data properly.
	public class UserControl1 : System.Windows.Forms.UserControl
	{
		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.ListBox listBox1;
		// Required designer variable.
		private System.ComponentModel.Container components = null;

              // Demand the zone requirement for the calling application.
              [ZoneIdentityPermission(SecurityAction.Demand, Zone = SecurityZone.Intranet)]
		public UserControl1()
		{
			// This call is required by the Windows.Forms Form Designer.
			InitializeComponent();

			// The OpenFileDialog box should not require any special permissions.
			OpenFileDialog fileDialog = new OpenFileDialog();
			if(fileDialog.ShowDialog() == DialogResult.OK)
			{
				// Reading the name of the selected file from the OpenFileDialog box
				// and reading the file requires FileIOPermission.  The user control should 
				// have this permission granted through its code group; the Web page that calls the 
				// control should not have this permission.  The Assert command prevents a stack walk 
				// that would fail because the caller does not have the required FileIOPermission.  
				// The use of Assert can open up security vulnerabilities if used incorrectly or 
				// inappropriately. Therefore, it should be used with great caution.
				// The Assert command should be followed by a RevertAssert as soon as the file operation 
				// is completed.
				new FileIOPermission(PermissionState.Unrestricted).Assert();
				textBox1.Text = fileDialog.FileName;
				// Display the contents of the file in the text box.
				FileStream fsIn = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, 
					FileShare.Read);
				StreamReader sr = new StreamReader(fsIn);
			
				// Process every line in the file
				for (String Line = sr.ReadLine(); Line != null; Line = sr.ReadLine()) 
				{
					listBox1.Items.Add(Line);
				}
				// It is very important to call RevertAssert to restore the stack walk for
				// file operations.
				FileIOPermission.RevertAssert();
			}

		}

		// Clean up any resources being used.
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if( components != null )
					components.Dispose();
			}
			base.Dispose( disposing );
		}

		#region Component Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.listBox1 = new System.Windows.Forms.ListBox();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(208, 112);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(320, 20);
			this.textBox1.TabIndex = 0;
			this.textBox1.Text = "textBox1";
			this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
			// 
			// listBox1
			// 
			this.listBox1.Location = new System.Drawing.Point(200, 184);
			this.listBox1.Name = "listBox1";
			this.listBox1.Size = new System.Drawing.Size(336, 108);
			this.listBox1.TabIndex = 1;
			// 
			// UserControl1
			// 
			this.Controls.Add(this.listBox1);
			this.Controls.Add(this.textBox1);
			this.Name = "UserControl1";
			this.Size = new System.Drawing.Size(592, 400);
			this.Load += new System.EventHandler(this.UserControl1_Load);
			this.ResumeLayout(false);

		}
		#endregion

		private void UserControl1_Load(object sender, System.EventArgs e)
		{
		
		}

		private void textBox1_TextChanged(object sender, System.EventArgs e)
		{
		
		}


	}
}


System.Object
  System.Attribute
    System.Security.AllowPartiallyTrustedCallersAttribute

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0
Mostrar: