none
ASP.NET Trust Level Medium/Full (Nivel de Segurança do servidor) RRS feed

  • Pergunta

  • Recentemente subi um sistema que criei em Asp.Net para o servidor web da KingHost. Ao tentar acessar a aplicação dá o seguinte erro:

    Falha na solicitação da permissão de tipo 'System.Web.AspNetHostingPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.]

    Pesquisando eu verifiquei que os novos Windows Server definem o nível de segurança como médio, evitando que uma aplicação possa acessar outras e fazer outras coisas.  Agora eu preciso saber como modificar a minha aplicação que em localhost e em meu servidor próprio roda perfeitamente para que ela rode sem problemas em servidores cujo o nível de segurança do ambiente seja "partially trusted" ou "medium trust".

    Alguém já passou por isso? 

    Já acrescentei no meu Web.config a tag <trust level>, da forma mostrada abaixo, mas ainda não funcionou.

    <system.web>   

    <trust level="Full"/> 

    </system.web>

    Depois de acrescentar essa tag a mensagem de erro agora é essa:

    Esta seção de configuração não pode ser usada neste caminho. Isso ocorre quando o administrador do site bloqueia o acesso a essa seção usando

    <location allowOverride="false"> de um arquivo de configuração herdado 

    Pesquisando eu pude perceber o seguinte:

    No servidor estão configuradas pode-se configurar as políticas de segurança no Web.config que está no diretório %windir%\Microsoft.NET\Framework\{version}\CONFIG\ do servidor (até em localhost vc pode definir isso). Normalmente está assim:

    <location allowOverride="true"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Full" originUrl="" /> </system.web> </location>


    Daí no web.config da minha aplicação eu só preciso setar o nível de segurança da minha aplicação, da colocando o que eu já coloquei:

    <system.web>   

    <trust level="Full"/> 

    </system.web>

    Isso funciona quando no servidor o atributo "allowOverride" está como true, o que permite que as aplicações escolham seu nível de segurança. Porém, logicamente, no servidor de hospedagem, onde há vários sistemas, eles coloca esse atributo como "false" não permitindo que sejam alteradas no Web.config. 

    Daí eu já não sei mais como faço pra alterar o nivel de segurança da minha aplicação.

    Alguém já passou por isso?

    • Editado Syd Franco quarta-feira, 21 de janeiro de 2015 19:56 acrescentando informações
    quarta-feira, 21 de janeiro de 2015 13:41

Respostas

  • Vc não tem permissão para alterar o level trust da sua aplicação no servidor do KingHost.

    http://stackoverflow.com/questions/523636/system-web-aspnethostingpermission-securityexception-when-trying-to-use-managedf

    Teve gente que conseguiu resolver atualizando o URL Rewriter para a ultima versão. http://urlrewriter.codeplex.com/releases/view/89403

    Outra solução foi:

    Vá nas propriedades das dlls compiladas (windows explorer), verificar se ele tem seguinte mensagem de segurança (na parte inferior da janela): "Este arquivo veio de outro computador e pode ser bloqueado para ajudar a proteger este computador." Se estiver presente, clique em "Desbloquear", "Aplicar" e "OK".


    Blog Breno Queiroz – MCP

    terça-feira, 27 de janeiro de 2015 13:30

Todas as Respostas

  • Syd,

    Talvez alguma configuração da empresa que gerencia seu servidor esteja levando a esse erro. Já tentou verificar com eles a respeito?

    quarta-feira, 21 de janeiro de 2015 16:16
  • Já sim, Renato.

    Simplesmente dizem que eu tenho que configurar da maneira correta, para rodar em servidores cujo o nível de segurança do ambiente seja "partially trusted" ou "medium trust"

    quarta-feira, 21 de janeiro de 2015 16:43
  • É, não estão ajudando muito. O complicado é que vc não tem acesso total ao ambiente deles, para fazer alguns testes e verficações.
    quarta-feira, 21 de janeiro de 2015 17:16
  • Que acesso que nada, man =/ 

    Acho que vou ter que criar um ambiente com esse nível de segurança pra ir tentando modificar a minha aplicação e testar.

    De qualquer forma, to pesquisando aqui como fazer isso. 

    quarta-feira, 21 de janeiro de 2015 17:39
  • Eu pedi a KingHost pra colocar minha aplicação no servidor Full Trust, mas essa foi a resposta deles:

    Como informado, não é possível configurá-lo como Trust Level FULL em nossos ambientes, apenas

    Medium Trust. O ideal, para a correção, seria verificar:

    -  Em conjunto ao desenvolvedor do componente, verifique se ele está assinado digitalmente através de uma chave "Strong Name". É necessário que o atributo "AllowPartiallyTrustedCallers" seja definido no código fonte do componente conforme
    msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx. Verifique também em todos os componentes dependentes, pois caso algum deles apresente o mesmo problema, o erro pode ser apresentado no componente que o chamou.

    - Caso você não seja o desenvolvedor do componente, solicite junto ao fabricante uma versão compatível com ambientes "partially trusted" ou "medium trust".

    Nunca tinha ouvido falar sobre AllowPartiallyTrustedCallerAttribute. 

    quinta-feira, 22 de janeiro de 2015 12:27
  • Para Frameworks mais novos, a Microsoft está desencorajando o Medium Trust em prol do isolamento por nível de sistema operacional para Frameworks mais novos como o Owin, no meu caso. Há várias respostas do SO falando sobre isso, mas cito as minhas fontes de pesquisa.

    Ou é preciso negociar com o provedor uma permissão para Full Trust, ou trocar de provedor. Eu tentei negociar com o provedor, mas eles não querem de jeito nenhum colocar minha aplicação no Full Trust.

    sexta-feira, 23 de janeiro de 2015 18:16
  • Vc não tem permissão para alterar o level trust da sua aplicação no servidor do KingHost.

    http://stackoverflow.com/questions/523636/system-web-aspnethostingpermission-securityexception-when-trying-to-use-managedf

    Teve gente que conseguiu resolver atualizando o URL Rewriter para a ultima versão. http://urlrewriter.codeplex.com/releases/view/89403

    Outra solução foi:

    Vá nas propriedades das dlls compiladas (windows explorer), verificar se ele tem seguinte mensagem de segurança (na parte inferior da janela): "Este arquivo veio de outro computador e pode ser bloqueado para ajudar a proteger este computador." Se estiver presente, clique em "Desbloquear", "Aplicar" e "OK".


    Blog Breno Queiroz – MCP

    terça-feira, 27 de janeiro de 2015 13:30
  • Vi que o Rewrite URL serve para substituir url para url mais amigável, Breno. Não conhecia. 

    De qualquer forma atualizei e deu erro:

    Exceção de Segurança

    Descrição: O aplicativo tentou executar uma operação não permitida pela política de segurança. Para conceder a permissão necessária a esse aplicativo, entre em contato com o administrador do sistema ou altere o nível de confiança do aplicativo no arquivo de configuração. 

    Detalhes da Exceção: System.Security.SecurityException: Falha na solicitação.

    Erro de Origem: 
    Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

    Rastreamento de Pilha: 
    [SecurityException: Falha na solicitação.]
       ManagedFusion.Rewriter.RewriterModule.Init(HttpApplication context) +28
       System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +418
       System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
       System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
       System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

    O servidor não permite executar o Rewrite.

    --

    Na outra solução que você citou eu tenho que clicar com o botão direito do mouse e ir em Propriedades de cada DLL? Eu fiz isso em algumas e não vi nenhuma informação na parte inferior, por exemplo:

    quinta-feira, 29 de janeiro de 2015 14:28
  • Ola Syd. Você conseguiu resolver o problema de segurança com a King Host? é que eu to passando pelo mesmo problema e ainda não consegui. Ate já instalei a versão mais nova do visual, mas mesmo assim não consigo. a resposta que tenho é a mesma sua.

    Hellmann's (Joviano Pott)

    quarta-feira, 11 de março de 2015 02:18
  • Ola Syd. Você conseguiu resolver o problema de segurança com a King Host? é que eu to passando pelo mesmo problema e ainda não consegui. Ate já instalei a versão mais nova do visual, mas mesmo assim não consigo. a resposta que tenho é a mesma sua.

    Hellmann's (Joviano Pott)

    Joviano, resolvi porque mudei minha aplicação pra Web Forms. Porque se dependesse deles já era.


    segunda-feira, 30 de março de 2015 14:47
  • É complicado lidar com o pessoal do KingHost.

    As tecnologias novas de .Net estão utilizando Nível de segurança Full Trust, inclusive projetos do tipo WebApi2.

    Com isso fica inviável hospedar em servidores aqui do país, pois os mesmos utilizam argumentos antigos dizendo que: "A própria Microsoft recomenda a utilização de ambientes em Medium Trust".

    No fim, para poder fazer minha aplicação funcionar, tive que hospedar meu back-end webapi no Azure, e a parte de front-end e banco de dados ficaram no KingHost. Mas a eficiência foi para o espaço porque ele faz um triângulo da informação.

    Requisição KingHost -> Solicita a Api do Azure -> consulta o banco no KingHost -> retorna pro Azure -> Devolve o Json pro KingHost e exibe pro cliente (Eita POG).

    Os servidores não querem é ter trabalho, quanto mais "Default" for a configuração deles, melhor.... dane-se o cliente!

    sexta-feira, 7 de agosto de 2015 14:59
  • Pessoal estou passando pelo mesmo problema, alguém conseguiu resolver?

    O pessoal da kinghost alterou essas politicas e agora meu site www.contabilidadeolimpia.com.br não está funcionando.


    sexta-feira, 19 de fevereiro de 2016 02:55
  • Ola.

    eu consegui migrando meu sistema inteiro para a godaddy. Os servidores nacionais nao deixam fazer nada. E na godaddy, voce quem escolhe o nivel de segurança. Nao tive mais problemas.


    Hellmann's (Joviano Pott)

    segunda-feira, 29 de fevereiro de 2016 13:19
  • Tive o mesmo problema recentemente, entrei em contato com o suporte do KingHost com a seguinte mensagem:


    Adicionei:
    [assembly: AllowPartiallyTrustedCallers()]
    No arquivo: AssemblyInfo.cs

    No Web.config adicionei a tag: 
    <system.web>
    ... 
    <trust level=\"Medium\" originUrl=\"\"/>
    ...
    </system.web>

    Fiz um novo publish e agora recebo o seguinte erro acessando a aplicação

    Erro de configuração:

    Descrição: Erro durante o processamento de um arquivo de configuração necessário para o serviço desta solicitação. Examine os detalhes específicos do erro e modifique esse arquivo de configuração apropriadamente. 

    Mensagem de Erro do Analisador: Esta seção de configuração não pode ser usada neste caminho. Isso ocorre quando o administrador do site bloqueia o acesso a essa seção usando <location allowOverride=\"false\"> de um arquivo de configuração herdado.

    Andei pesquisando sobre o erro e parece que a microsoft esta incentivando o Full Trust para novas aplicações e que não consigo sobrescrever as configurações do servidor, apenas o administrador.

    Fonte.
    http://forums.asp.net/t/2034106.aspx?+location+allowOverride+false+error+show

    Vi alguns artigos falando sobre o mesmo problema com o servidor da KingHost:

    https://social.msdn.microsoft.com/Forums/pt-BR/b8ebf499-e13d-424a-a65c-60d30d0ae865/aspnet-trust-level-mediumfull-nivel-de-segurana-do-servidor?forum=aspnetpt

    Gostaria de alguma solução. 

    Att.

    Recebi a seguinte resposta:

    Boa noite, tudo bem? 
     
    Em caráter de exceção efetuei a troca do trustlevel para full apenas em seu subdomínio. 
     
    Neste momento a falha acontece devido a configuração que você tentou realizar para ajustar o trustlevel como medium "AllowPartiallyTrustedCallers".
     
    Sugiro que realize o deploy novamente de sua aplicação sem ajustes de medium trust. 
     
    Agradeço desde já, tenha uma boa noite e uma boa semana. 


    Meu problema foi resolvido e não precisei migrar de servidor :)

    terça-feira, 23 de agosto de 2016 14:10
  • Sei que o post é velho!

    mas se você chegou aqui como eu achando que é difícil resolver e que o suporte da kinghost não resolve e demora!

    levou menos de 5 minutos no chat da kinghost pra resolver o meu aqui. criei um subdominio e  rodou antes mesmo de fechar o chat com o suporte. 

    quarta-feira, 30 de janeiro de 2019 14:12
  • Estou com o mesmo problema no UOLHOST faz 3 dias que estou tentando resolver, hoje abri um novo chamado solicitando a mudança do trustlevel para full, recebendo a resposta retorno aqui
    sexta-feira, 10 de maio de 2019 19:59
  • Sei que o post é velho!

    mas se você chegou aqui como eu achando que é difícil resolver e que o suporte da kinghost não resolve e demora!

    levou menos de 5 minutos no chat da kinghost pra resolver o meu aqui. criei um subdominio e  rodou antes mesmo de fechar o chat com o suporte. 


    Funcionou cmg tbm!
    quarta-feira, 22 de maio de 2019 20:20
  • Prezados estou passando pelo mesmo problema, no servidor da KingHost. Já adicionei no webconfig  

    <trust level="Full"/> 

    e Nada. Alguém tem alguma dica?

    

    domingo, 27 de outubro de 2019 13:09
  • Hoje em dia a KingHost já libera Full Trust se necessário, é só abrir um Ticket através da Central de Chamados deles que eles fazem. Creio que pelo suporte via Chat também seja possível.
    Antigamente não tinha como ser feito isso, realmente. Hoje o cenário já é outro, eles evoluíram bastante, suportam até IIS10 e .Net Core.
    quarta-feira, 27 de novembro de 2019 01:35
  • Hoje, 06/04/2020, seguem liberando o Full Trust sem problemas pelo chat
    segunda-feira, 6 de abril de 2020 18:14
  • Hoje, dia 18/06/2020, infelizmente não estão mais liberando o Full Trust. Agora somente contratando um servidor dedicado. 
    quinta-feira, 18 de junho de 2020 20:38
  • Exato. Estou com o mesmo problema para migrar uma aplicação de um subdiretório para uma url própria. A Kinghost não está autorizando Full Trust em ambiente compartilhado. Terei que mantê-la no subdiretório até desenvolver uma nova aplicação.
    terça-feira, 23 de junho de 2020 14:09
  • Ola,  Syd Franco.

    Tive esse mesmo problema unica coisa que fiz foi informar que precisar  o modo trust para acesso ao mysql e o suporte fez a liberação para minha aplicação.


    Analista Programador

    terça-feira, 18 de agosto de 2020 21:34