Como utilizar o atributo AllowPartiallyTrustedCallers para chamar uma assemblagem tem um nome seguro a partir de uma página Web utilizando o Visual C#. NET, Visual C# 2005 ou versões posteriores

Traduções de Artigos Traduções de Artigos
Artigo: 839300 - Ver produtos para os quais este artigo se aplica.
importante Este artigo contém informações que lhe mostra como ajudar a diminuir as definições de segurança ou como desactivar as funcionalidades de segurança num computador. Pode efectuar estas alterações para contornar um problema específico. Antes de efectuar estas alterações, recomendamos que avalie os riscos associados à implementação desta solução alternativa no seu ambiente específico. Se implementar esta solução alternativa, tome medidas adicionais adequadas para proteger o seu sistema.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

poderá chamar um controlo de utilizador do Windows a partir de uma página Web. Para ligar um controlo de utilizador do Windows que podem aceder a recursos seguros e que é criado como uma assemblagem com um nome seguro, tem de marcar a assemblagem do controlo de utilizador do Windows com o atributo de assemblagem AllowPartiallyTrusted . Também tem de incluir uma chamada para o método de declaração para permitir o controlo de utilizador do Windows aceder a recursos protegidos.

INTRODUÇÃO

Este artigo passo a passo descreve como chamar um Windows controlo do utilizador a partir de uma página Web. O controlo de utilizador do Windows descrito neste artigo baseia-se como uma assemblagem com um nome seguro. O exemplo neste artigo descreve como utilizar o atributo AllowPartiallyTrustedCallers da assemblagem para que uma assemblagem com um nome seguro pode ser acedida a partir de uma página Web. O exemplo no artigo também descreve como utilizar o método de declaração .

Criar um par de chaves com um nome seguro

Um par de chaves tem um nome seguro é utilizado para assinar uma assemblagem para um controlo de utilizador que tem um nome seguro. O nome seguro é utilizado quando criar um grupo de código que concede permissão para utilizar a assemblagem do código parcialmente fidedigno.
  1. Abra uma linha de comandos Visual Studio.

    No Microsoft Visual Studio .NET 2002, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio. NET , aponte para Ferramentas do Visual Studio .NET e, em seguida, clique em Visual Studio .NET Command Prompt . O Visual Studio .NET apresentada janela.

    No Microsoft Visual Studio .NET 2003, clique em Iniciar , aponte para programas , aponte para o Microsoft Visual Studio .NET 2003 , aponte para Ferramentas do Visual Studio .NET e, em seguida, clique em Visual Studio .NET 2003 ' linha de comandos . Aparece a janela de linha de comandos do Visual Studio .NET 2003 comandos.

    No Visual Studio 2005, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2005 , aponte para o Visual Studio 2005 Tools e, em seguida, clique em Visual Studio 2005 Command Prompt . Aparece a janela de linha de comandos do Visual Studio 2005.

    No Visual Studio 2008, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2008 , aponte para o Visual Studio 2008 Tools e, em seguida, clique em Visual Studio 2008 Command Prompt . Aparece a janela linha de comandos de 2008Command Visual Studio.
  2. Escreva o seguinte na linha de comandos e, em seguida, prima ENTER:
    sn -k c:\snKey.snk

Criar um controlo de utilizador do Windows utilizando o Microsoft Visual C# .NET, Microsoft Visual C# 2005 ou posterior

aviso Esta medida pode tornar o computador ou a rede mais vulnerável a ataques de utilizadores mal intencionados ou software malicioso como vírus. A Microsoft não recomenda esta medida, mas fornece estas informações para que o utilizador pode implementá-la à sua própria responsabilidade. Usar esta solução por sua conta e risco.

Este controlo do utilizador demonstra como utilizar o atributo AllowPartiallyTrustedCallers de uma assemblagem. Só pode ser chamada uma assemblagem com um nome seguro por um chamador totalmente fidedigno, a menos que a assemblagem utiliza o atributo AllowPartiallyTrustedCallers . O exemplo para o controlo de utilizador também demonstra como utilizar o método de declaração . O método de declaração declara que o código de chamada pode utilizar o código que chama o método declaração para aceder ao recurso protegido por um pedido de permissão. O código pode aceder ao recurso mesmo chamadas que são superiores na pilha tem não foi concedidas permissão para aceder ao recurso.

Este controlo de utilizador permite-lhe seleccionar um ficheiro utilizando a caixa de diálogo abertas. O controlo, em seguida, abre o ficheiro de texto na caixa de listagem. A interface de utilizador deste controlo de utilizador inclui uma caixa de texto e uma caixa de listagem. A caixa de texto apresenta o nome do ficheiro que está seleccionado e a caixa de listagem mostra o conteúdo do ficheiro que está seleccionada.

Para ler o nome do ficheiro seleccionado a partir da caixa OpenFileDialog e ler o ficheiro, FileIOPermission tipo de permissão deve ser concedido. O controlo de utilizador tem de ter esta permissão concedida através do respectivo grupo de código. A página Web que chama o controlo não tem esta permissão.

Para impedir que uma descrição passo passo de pilha não tem êxito porque o emissor não tem o tipo de permissão necessário FileIOPermission, utilize o método de declaração . Tenha em atenção que o método de declaração pode abrir vulnerabilidades de segurança se for utilizado o método de declaração incorrectamente ou inadequadamente. Por conseguinte, tem de utilizar o método de declaração com grande cuidado. Um método RevertAssert tem de seguir o método de declaração assim que a operação de ficheiro está concluída.

Nota Para se certificar de que o conteúdo do ficheiro aparecem correctamente na caixa de listagem, utilize este controlo de utilizador para seleccionar apenas os ficheiros de texto.
  1. Inicie o Microsoft Visual Studio. NET, Microsoft Visual Studio 2005 ou uma versão posterior do Visual Studio.
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto . A caixa de diálogo novo projecto é apresentada.
  3. Em Project Types , clique em Visual C# Projects .

    Nota No Visual Studio, clique em Visual C# em Project Types .
  4. Em modelos , clique em Windows biblioteca de controlos .
  5. Na caixa nome , escreva UserControl .
  6. Clique em OK .
  7. Na janela Solution Explorer, clique com o botão direito do rato UserControl1.cs e, em seguida, clique em Código . O ficheiro UserControl1.cs é apresentado.
  8. Substitua o código existente com o seguinte código:
    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;
    
    [assembly:AllowPartiallyTrustedCallers]
    
    namespace UserControl
    {
    	/// <summary>
    	/// Summary description for UserControl1.
    	/// </summary>
    	public class UserControl1 : System.Windows.Forms.UserControl
    	{
    		private System.Windows.Forms.TextBox textBox1;
    		private System.Windows.Forms.ListBox listBox1;
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
    
    		public UserControl1()
    		{
    			// This call is required by the Windows.Forms Form Designer.
    			InitializeComponent();
    
    			// TODO: Add any initialization after the InitForm call.
    			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 Assert command must 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();
    			}
    
    		}
    
    		/// <summary>
    		/// Clean up any resources that are being used.
    		/// </summary>
    		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(32, 16);
    			this.textBox1.Name = "textBox1";
    			this.textBox1.TabIndex = 0;
    			this.textBox1.Text = "textBox1";
    			// 
    			// listBox1
    			// 
    			this.listBox1.Location = new System.Drawing.Point(144, 16);
    			this.listBox1.Name = "listBox1";
    			this.listBox1.Size = new System.Drawing.Size(120, 95);
    			this.listBox1.TabIndex = 1;
    			// 
    			// UserControl1
    			// 
    			this.Controls.Add(this.listBox1);
    			this.Controls.Add(this.textBox1);
    			this.Name = "UserControl1";
    			this.Size = new System.Drawing.Size(376, 120);
    			this.ResumeLayout(false);
    
    		}
    		#endregion
    			}
    }
    
  9. No Solution Explorer, clique com o botão direito do rato AssemblyInfo.cs e, em seguida, clique em Código . O ficheiro AssemblyInfo.cs é apresentado.
  10. Localize o seguinte código:
    [assembly: AssemblyVersion("1.0.*")]
    substituir este código com o seguinte código:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Localize o seguinte código:
    [assembly: AssemblyKeyFile("")]
    substituir este código com o seguinte código:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. No menu criar , clique em criar soluções .

Criar um grupo de código para atribuir as permissões para a assemblagem

aviso Esta medida pode tornar o computador ou a rede mais vulnerável a ataques de utilizadores mal intencionados ou software malicioso como vírus. A Microsoft não recomenda esta medida, mas fornece estas informações para que o utilizador pode implementá-la à sua própria responsabilidade. Usar esta solução por sua conta e risco.

Um grupo de código determina se uma assemblagem corresponde aos critérios definidos pelo administrador que é referido como uma condição de membro. Se a assemblagem corresponder, o grupo de código concede a assemblagem um conjunto de permissões que foi associado esse grupo de código.

Para criar um grupo de código:
  1. Clique em Iniciar , aponte para definições e, em seguida, clique em Painel de controlo . Aparece a janela Painel de controlo .
  2. Faça duplo clique em Ferramentas administrativas . Aparece a janela ' Ferramentas administrativas .
  3. No Microsoft Visual Studio .NET 2002, faça duplo clique em configuração do Microsoft .NET Framework . O .NET Framework Configuration aparece a janela.

    Para o Microsoft Visual Studio .NET 2003, clique duas vezes em Microsoft .NET Framework 1.1 Configuration . Aparece a janela .NET configuração 1.1 .

    No Microsoft Visual Studio 2005 ou em versões posteriores, faça duplo clique sobre configuração do Microsoft .NET Framework 2.0 . O .NET Framework 2.0 Configuration aparece a janela.
  4. No painel da esquerda, expanda Política de segurança do Runtime do , expanda o computador e, em seguida, expanda Os grupos de código .
  5. Clique com o botão direito do rato All_Code e, em seguida, clique em Novo . Aparece o Assistente Criar grupo de código.
  6. Certifique-se de que criar um novo código de grupo é seleccionado, escreva MyUserControlCodeGroup na caixa nome e, em seguida, clique em seguinte . Aparece a página Seleccione um tipo de condição .
  7. Na lista Escolha o tipo de condição para este grupo de código , clique em Nome seguro .
  8. Clique em Importar . A caixa de diálogo Importar seguras nome de assemblagem é apresentada.
  9. Localize o ficheiro UserControl.dll que criou na secção "Criar um controlo de utilizador do Windows utilizando uma versão posterior, Microsoft Visual C# 2005 ou Microsoft Visual C# .NET" e, em seguida, clique em Abrir .
  10. Clique em seguinte . Aparece a página atribuir um conjunto de permissões para o grupo de código .
  11. Clique em utilizar existente permissão definida , seleccione FullTrust a partir da lista e, em seguida, clique em seguinte . Aparece a página a concluir o assistente .
  12. Clique em Concluir para fechar o Assistente Criar grupo de código.

Criar um ficheiro HTML para chamar o controlo de utilizador

Depois de criar um grupo de código para atribuir as permissões para a assemblagem, tem de criar um ficheiro HTML para chamar o controlo de utilizador a partir do browser e tem de configurar o ambiente para garantir que o controlo de utilizador seja invocado com êxito.
  1. Clique em Iniciar , clique em Executar , escreva notepad e, em seguida, clique em OK .
  2. No bloco de notas, cole o seguinte código:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. Na pasta raiz do Microsoft Internet Information Services (IIS), guarde o ficheiro como CallUserControl.htm.
  4. Copie o ficheiro UserControl.dll que criou na secção "Criar um controlo de utilizador do Windows utilizando uma versão posterior, Microsoft Visual C# 2005 ou Microsoft Visual C# .NET" para a pasta raiz do IIS.
  5. Abra o Microsoft Internet Explorer.
  6. Na caixa endereço , escreva http://localhost/CallUserControl.htm e, em seguida, prima ENTER. A caixa de diálogo Abrir é apresentada.
  7. Localize qualquer ficheiro de texto e, em seguida, clique em Abrir . O texto do ficheiro é apresentado no controlo de caixa de listagem no browser.

Referências

Para obter mais informações, visite os seguintes Web sites da Microsoft Developer Network (MSDN):
Configurar grupos de código utilizando a ferramenta de configuração do .NET Framework
http://msdn2.microsoft.com/en-us/library/eb8xw74a(vs.71).aspx

Método CodeAccessPermission.Assert
http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert(vs.71).aspx

As assemblagens do .NET framework e o atributo AllowPartiallyTrustedCallers
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

Classe AllowPartiallyTrustedCallersAttribute
http://msdn2.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute(vs.71).aspx

Considerações de segurança de assemblagem
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

Comunicações de segurança: nomes seguras e de segurança no .NET Framework
http://msdn2.microsoft.com/en-us/library/aa302416.aspx

Propriedades

Artigo: 839300 - Última revisão: 15 de julho de 2008 - Revisão: 4.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Palavras-chave: 
kbmt kbhowtomaster kbhowto kblistbox kbfileio kbdll kbcontrol kbweb kbuser kbsecurity kbpolicy kbopenfile KB839300 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 839300

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com