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 de directório virtual para um remoto partilhar 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 | Reduzir tudo

Sintomas

Quando utilizar um directório virtual que aponta para uma partilha remota para hospedar uma aplicação do Microsoft baseados no ASP.NET, poderá receber uma mensagem de erro que é semelhante a um dos seguintes procedimentos:

Mensagem 1
Descrição da excepção de segurança: A aplicação tentou executar uma operação não permitida pela política de segurança. Para conceder a esta aplicação a permissão necessária contacte o administrador do sistema ou alterar o nível de fidedignidade da aplicação no ficheiro de configuração.

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

Erro de origem:

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

Descrição de erro do analisador: Erro durante a análise de um recurso necessário para efectuar este pedido. Reveja os detalhes do erro de análise específico que se segue e modifique o ficheiro de origem conforme apropriado.

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

Erro de origem: linha 1: < % @ aplicação Codebehind="Global.asax.cs" herda = ".Global ApplicationName % > Ficheiro de origem:Path of Application \global.asax linha: 1

Causa

O espaço de nomes System.Web não tem AllowPartiallyTrustedCallersAttribute aplicada. Para obter mais informações, visite o seguinte Microsoft Developer Web site 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 esteja no grupo de código de My_Computer_Zone que não tenha este atributo requer o direito de utilizador FullTrust. Por conseguinte, a partilha remota que detém o conteúdo de aplicações Web requer FullTrust.

Resolução

Para resolver este comportamento, conceda o direito de FullTrust à partilha remota:
  1. No servidor Web, abra Ferramentas administrativas e, em seguida, faça duplo clique Microsoft.NET Framework Configuration.
  2. Expanda Política de segurança do Runtime, expanda o computador e, em seguida, expanda Os grupos de código.
  3. Clique com o botão direito do rato All_Code e, em seguida, clique em Novo.
  4. Seleccione criar um novo grupo de código. Atribua um nome relevante, como, por exemplo, o nome da partilha de aplicações de seu grupo de código. Clique em seguinte.
  5. Na lista Escolha o tipo de condição para este grupo de código, seleccione URL.
  6. Na caixa URL, escreva o caminho da partilha no seguinte formato:
    file:////\\ nome_do_computador \ Nome_da_partilha \ *
    Nota Substitua computername o nome do computador que hospeda a partilha remota. Substitua sharename com o nome da partilha.
  7. Clique em seguinte. Na página seguinte, seleccione utilizar um conjunto de permissões existente e, em seguida, seleccione FullTrust.
  8. Clique em seguinte e, em seguida, clique em Concluir.
  9. Reiniciar o Microsoft Internet Information Services (IIS) para reiniciar o processo de trabalho do ASP.NET.
Se não for apresentado o Microsoft .NET Framework Configuration em Ferramentas administrativas, pode instalar o .NET Framework SDK para adicionar o Microsoft .NET Framework Configuration. Em alternativa, pode executar o seguinte comando para efectuar a alteração:
Drive:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on
Nota Para mais informações sobre estes argumentos fazer, execute o seguinte comando:
caspol.exe-?

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Nesta configuração, a conta sob a qual o processo de trabalho do ASP.NET é executado tem de ter direitos suficientes para a partilha remota. Pode definir a conta em que é executado o processo de trabalho utilizando o código de processModel no ficheiro Machine.config.

Passos para reproduzir o comportamento

  1. Crie um novo directório virtual que aponta para uma partilha remota.
  2. Crie uma aplicação para o directório virtual. Certifique-se de que o utilizador que estabelece ligação à partilha tem acesso de leitura a conteúdo remoto.
  3. Na tag processModel do ficheiro Machine.config, altere o utilizador para um utilizador de domínio que tenha a lista, ler e executar permissões na partilha remota.
  4. Criar um ficheiro de .aspx inline e, em seguida, coloque o ficheiro na partilha remota.
  5. Efectuar um pedido para a página.

Referências

Para obter mais informações sobre as permissões da conta ASPNET requer para executar aplicações ASP.NET, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
317012  (http://support.microsoft.com/kb/317012/ ) Identidade de processo e o pedido no ASP.NET
Para obter mais informações sobre a segurança do ASP.NET, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
306590  (http://support.microsoft.com/kb/306590/ ) Descriçã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 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: 320268  (http://support.microsoft.com/kb/320268/en-us/ )