Como usar o atributo AllowPartiallyTrustedCallers para chamar um assembly com um nome forte de uma página da Web usando Visual translation from VPE for Csharp. NET, Visual translation from VPE for Csharp 2005 ou versões posteriores

Traduções deste artigo Traduções deste artigo
ID do artigo: 839300 - Exibir os produtos aos quais esse artigo se aplica.
importante Este artigo contém informações que mostra como ajudar a reduzir as configurações de segurança ou como desativar os recursos de segurança em um computador. Você pode fazer essas alterações para solucionar um problema específico. Antes de fazer essas alterações, recomendamos que avalie os riscos associados à implementação dessa solução alternativa no seu ambiente específico. Se você implementar essa solução alternativa, execute quaisquer etapas apropriadas adicionais para ajudar a proteger seu sistema.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

talvez queira chamar um controle de usuário do Windows a partir de uma página da Web. Para chamar um controle de usuário do Windows que pode acessar recursos protegidos e que é criado como um assembly que tem um nome de alta segurança, você deve marcar o assembly do controle de usuário do Windows com o atributo de assembly AllowPartiallyTrusted . Você também deve incluir uma chamada para o método Assert para permitir o controle de usuário do Windows acessar recursos protegidos.

INTRODUÇÃO

Este artigo descreve detalhadamente como chamar um Windows controle de usuário de uma página da Web. O controle de usuário do Windows que este artigo descreve é criado como um assembly que tem um nome de alta segurança. O exemplo neste artigo descreve como usar o atributo AllowPartiallyTrustedCallers do assembly para que um assembly que tem um nome de alta segurança possa ser acessado de uma página da Web. O exemplo no artigo também descreve como usar o método Assert .

Criar um par de chaves que tem um nome forte

Um par de chaves que tem um nome forte é usado para assinar um assembly para um controle de usuário que tem um nome de alta segurança. O nome de alta segurança é usado quando você cria um grupo de código que concede permissão para usar o assembly de código parcialmente confiáveis.
  1. Abra um prompt de comando do Visual Studio.

    No Microsoft Visual Studio .NET 2002, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio. NET , aponte para Visual Studio .NET Tools e clique em Visual Studio .NET Command Prompt . O Visual Studio .NET janela é exibida.

    No Microsoft Visual Studio .NET 2003, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio .NET 2003 , aponte para Visual Studio .NET Tools e clique em Visual Studio .NET 2003 Command Prompt . A janela de prompt de comando do Visual Studio .NET 2003 é exibida.

    No Visual Studio 2005, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2005 , aponte para Visual Studio 2005 Tools e, em seguida, clique em Visual Studio 2005 Command Prompt . A janela Visual Studio 2005 Command Prompt é exibida.

    No Visual Studio 2008, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2008 , aponte para Visual Studio 2008 Tools e clique em Visual Studio 2008 Command Prompt . A janela de prompt 2008Command Visual Studio será exibida.
  2. Digite o seguinte no prompt de comando e pressione ENTER:
    sn k - c:\snKey.snk

Criar um controle de usuário do Windows usando o Microsoft Visual translation from VPE for Csharp .NET, Microsoft Visual translation from VPE for Csharp 2005 ou uma versão mais recente

Aviso Esta solução alternativa pode tornar seu computador ou sua rede mais vulneráveis aos ataques de usuários mal-intencionados ou softwares mal-intencionados como vírus. Nós não recomendamos esta solução alternativa, mas são fornece essas informações para que você pode implementar essa solução alternativa sua vontade. Use esta solução alternativa por seu próprio risco.

Esse controle de usuário demonstra como usar o atributo AllowPartiallyTrustedCallers de um assembly. Um assembly que tem um nome de alta segurança só pode ser chamado por um chamador totalmente confiável, a menos que o assembly usa o atributo AllowPartiallyTrustedCallers . O controle de usuário de exemplo também demonstra como usar o método Assert . O método Assert declara que o código de chamada pode usar o código que chama o método Assert para acessar o recurso é protegido por uma demanda de permissão. O código pode acessar o recurso mesmo se os chamadores são maiores na pilha não receberam permissão para acessar o recurso.

Este controle de usuário permite que você selecionar um arquivo usando a caixa de diálogo aberta. O controle, em seguida, abre o arquivo de texto na caixa de listagem. A interface do usuário deste controle de usuário inclui uma caixa de texto e uma caixa de listagem. A caixa de texto exibe o nome do arquivo que está selecionado e a caixa de listagem mostra o conteúdo do arquivo que está selecionada.

Para ler o nome do arquivo selecionado da caixa OpenFileDialog e ler o arquivo, o FileIOPermission tipo de permissão deve ser concedido. O controle de usuário deve ter essa permissão concedida por meio de seu grupo de códigos. A página da Web que chama o controle não tem essa permissão.

Para impedir que um stack walk que não seja bem-sucedida porque o chamador não tem o tipo de permissão necessário FileIOPermission, use o método Assert . Observe que o método Assert pode abrir vulnerabilidades de segurança se o método Assert é usado incorretamente ou inadequadamente. Portanto, você deve utilizar o método Assert com muito cuidado. Um método RevertAssert deve seguir o método Assert assim que a operação de arquivo é concluída.

Observação Para certificar-se que o conteúdo do arquivo aparece corretamente na caixa de lista, use esse controle de usuário para selecionar somente arquivos de texto.
  1. Inicie o Microsoft Visual Studio. NET, Microsoft Visual Studio 2005 ou uma versão posterior do Visual Studio.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project . A caixa de diálogo New Project é exibida.
  3. Em Project Types , clique em projetos translation from VPE for Csharp Visual .

    Observação No Visual Studio, clique em translation from VPE for Csharp Visual em Tipos de projeto .
  4. Em modelos , clique em Windows Control Library .
  5. Na caixa nome , digite UserControl .
  6. Clique em OK .
  7. Na janela Solution Explorer, clique com o botão direito do mouse UserControl1.cs e, em seguida, clique em View Code . O arquivo UserControl1.cs aparece.
  8. Substitua o código existente com o código a seguir:
    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 mouse em AssemblyInfo.cs e, em seguida, clique em View Code . O arquivo AssemblyInfo.cs aparece.
  10. Localize o código a seguir:
    [assembly: AssemblyVersion("1.0.*")]
    substituir esse código com o seguinte código:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Localize o código a seguir:
    [assembly: AssemblyKeyFile("")]
    substituir esse código com o seguinte código:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. No menu Build , clique em Build Solution .

Criar um grupo de códigos para atribuir permissões para o assembly

Aviso Esta solução alternativa pode tornar seu computador ou sua rede mais vulneráveis aos ataques de usuários mal-intencionados ou softwares mal-intencionados como vírus. Nós não recomendamos esta solução alternativa, mas são fornece essas informações para que você pode implementar essa solução alternativa sua vontade. Use esta solução alternativa por seu próprio risco.

Um grupo de códigos determina se um assembly coincide com critérios definidos pelo administrador que é conhecido como uma condição de associação. Se o assembly corresponder, o grupo de códigos concede o assembly um conjunto de permissões que foi associado a esse grupo de códigos.

Para criar um grupo de códigos:
  1. Clique em Iniciar , aponte para configurações e, em seguida, clique em Painel de controle . A janela de Painel de controle aparece.
  2. Clique duas vezes em Ferramentas administrativas . A janela Ferramentas administrativas é exibida.
  3. No Microsoft Visual Studio .NET 2002, clique duas vezes em Microsoft .NET Framework Configuration . O .NET Framework Configuration janela é exibida.

    Para o Microsoft Visual Studio .NET 2003, clique duas vezes em Microsoft .NET Framework 1.1 Configuration . A janela .NET 1.1 Configuration aparece.

    No Microsoft Visual Studio 2005 ou em versões posteriores, clique duas vezes Microsoft .NET Framework 2.0 Configuration . O .NET Framework 2.0 Configuration janela é exibida.
  4. No painel esquerdo, expanda Runtime Security Policy , expanda computador e, em seguida, expanda Grupos de códigos .
  5. Clique com o botão direito do mouse em All_Code e, em seguida, clique em novo . O assistente criar grupo de código aparece.
  6. Verifique se criar um novo grupo de código está selecionada, digite MyUserControlCodeGroup na caixa nome e em seguida, clique em Avançar . A página Escolha um tipo de condição é exibida.
  7. Na lista Escolha o tipo de condição para este grupo de códigos , clique em Nome forte .
  8. Clique em Importar . A caixa de diálogo Importar forte nome do assembly é exibida.
  9. Localize o arquivo UserControl.dll que você criou na seção "Criar um controle de usuário do Windows usando o Microsoft Visual translation from VPE for Csharp .NET, Microsoft Visual translation from VPE for Csharp 2005 ou posterior" e, em seguida, clique em Abrir .
  10. Clique em Avançar . A página atribuir um conjunto de permissões para o grupo de códigos é exibida.
  11. Clique em Definir permissão existente usar , selecione FullTrust da lista e, em seguida, clique em Avançar . A página Concluindo o Assistente será exibida.
  12. Clique em Concluir para fechar o assistente criar grupo de códigos.

Crie um arquivo HTML para chamar o controle de usuário

Depois de criar um grupo de código para atribuir as permissões para o assembly, você deverá criar um arquivo HTML para chamar o controle de usuário do navegador, e você deve configurar o ambiente para certificar-se que o controle de usuário é chamado com êxito.
  1. Clique em Iniciar , clique em Executar , digite 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), salve o arquivo como CallUserControl.htm.
  4. Copie o arquivo UserControl.dll que você criou na seção "Criar um controle de usuário do Windows usando o Microsoft Visual translation from VPE for Csharp .NET, Microsoft Visual translation from VPE for Csharp 2005 ou posterior" para a pasta raiz do IIS.
  5. Abra o Microsoft Internet Explorer.
  6. Na caixa endereço , digite http://localhost/CallUserControl.htm e, em seguida, pressione ENTER. A caixa de diálogo Abrir será exibida.
  7. Localize qualquer arquivo de texto e, em seguida, clique em Abrir . O texto do arquivo aparece no controle ListBox no navegador.

Referências

Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:
Configurando grupos de código usando a ferramenta 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

Assemblies 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 do assembly
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

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

Propriedades

ID do artigo: 839300 - Última revisão: terça-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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