ID do artigo: 320268 - Última revisão: quarta-feira, 16 de dezembro de 2009 - Revisão: 6.0

"System.Security.SecurityException: erro de segurança" mensagem de erro quando os pontos do diretório virtual para um remoto compartilham no ASP.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando você usar um diretório virtual que aponta para um compartilhamento remoto para hospedar um aplicativo baseado em ASP.NET da Microsoft, você pode receber uma mensagem de erro semelhante a um dos seguintes:

Mensagem 1
Descrição da exceção de segurança: O aplicativo tentou executar uma operação não permitida pela diretiva de segurança. Para conceder este aplicativo a permissão necessária contate o administrador do sistema ou alterar o nível de confiança do aplicativo no arquivo de configuração.

Detalhes da exceção: System.Security.SecurityException: segurança erro.

Erro de origem:

Linha 30: booleano estático privado __intialized = false; linha 31: 32 linha: Global_asax() pública {line 33: se ((ASP.Global_asax.__intialized == false)) {line 34: ASP.Global_asax.__intialized = true;
Mensagem 2
Erro de servidor no ' / ApplicationName ' Application.

Descrição de erro do analisador: Erro durante a análise de um recurso necessário para atender esta solicitação. Examine os detalhes de erro de análise específicas e modificar seu arquivo de origem apropriadamente.

Mensagem de erro do analisador: Não foi possível carregar tipo ApplicationName.Global'.

Erro de origem: linha 1: < % @ Application Codebehind="Global.asax.cs" Inherits = "ApplicationName .Global"% > Arquivo de origem:Path of Application \global.asax linha: 1

Causa

Namespace System.Web não tem o AllowPartiallyTrustedCallersAttribute aplicado a ele. Para obter mais informações, visite o Microsoft Developer seguinte site da Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms994923.aspx (http://msdn2.microsoft.com/en-us/library/ms994923.aspx)
Qualquer código que não está no grupo de código de My_Computer_Zone não tem este atributo requer o direito de usuário FullTrust. Portanto, o compartilhamento remoto que mantém o conteúdo de aplicativos da Web requer FullTrust.

Resolução

Para resolver esse comportamento, conceda o direito de FullTrust o compartilhamento remoto:
  1. No servidor Web, abra Ferramentas administrativas e clique duas vezes em Configuração do Microsoft .NET Framework.
  2. Expanda Runtime Security Policy, expanda Machine e expanda Grupos de códigos.
  3. Clique com o botão direito do mouse em All_Code e, em seguida, clique em novo.
  4. Selecione criar um novo grupo de código. Dê um nome relevante, como o nome do compartilhamento de aplicativos de seu grupo de código. Clique em Avançar.
  5. Na lista Escolha o tipo de condição para este grupo de códigos, selecione URL.
  6. Na caixa URL, digite o caminho do compartilhamento no seguinte formato:
    file:////\\ nome_do_computador \ nome_do_compartilhamento \ *
    Observação Substitua computername pelo nome do computador que está hospedando o compartilhamento remoto. Substitua sharename com o nome do compartilhamento.
  7. Clique em Avançar. Na próxima página, selecione usar um conjunto de permissões existente e selecione FullTrust.
  8. Clique em Avançar e, em seguida, clique em Concluir.
  9. Reinicie o Microsoft Internet Information Services (IIS) para reiniciar o processo do operador do ASP.NET.
Se o Microsoft .NET Framework Configuration não é exibido em Ferramentas administrativas, você pode instalar o SDK do .NET Framework para adicionar o Microsoft .NET Framework Configuration. Como alternativa, você pode executar o comando a seguir para fazer a alteração:
Drive:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on
Observação Para obter mais informações sobre o que fazem esses argumentos, execute o seguinte comando:
caspol.exe-?

Situação

Esse comportamento é por design.

Mais Informações

Nessa configuração, a conta na qual o processo do operador do ASP.NET é executado deve ter direitos suficientes para o compartilhamento remoto. Você pode definir a conta sob a qual o processo do operador é executado usando a marca processModel do arquivo Machine.config.

Etapas para reproduzir o comportamento

  1. Crie um novo diretório virtual que aponta para um compartilhamento remoto.
  2. Crie um aplicativo para o diretório virtual. Certifique-se de que o usuário que se conecta ao compartilhamento tem acesso de leitura para o conteúdo remoto.
  3. Na marca processModel do arquivo Machine.config, altere o usuário para um usuário de domínio que tem a lista, ler e executar permissões no compartilhamento remoto.
  4. Criar um arquivo.aspx embutido e colocar o arquivo no compartilhamento remoto.
  5. Fazer uma solicitação para a página.

Referências

Para obter mais informações sobre as permissões da conta ASPNET requer para executar aplicativos ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
317012  (http://support.microsoft.com/kb/317012/ ) Processo e identidade de solicitação no ASP.NET
Para obter mais informações sobre a segurança do ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
306590  (http://support.microsoft.com/kb/306590/ ) Visão geral de segurança do ASP.NET

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palavras-chave: 
kbmt kbsecurity kbwebserver kbprb KB320268 KbMtpt
Tradução automáticaTraduçã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: 320268  (http://support.microsoft.com/kb/320268/en-us/ )