O que são as mais comuns, coisas típicas para evitar codificação em meu aplicativo ASP.NET para que ele seja executado sob a confiança média em um servidor compartilhado?

StackOverflow https://stackoverflow.com/questions/275444

Pergunta

O que são as coisas que a confiança média pára-lo de fazer? Por exemplo, eu já aprendi que a confiança média impede de usar System.IO.Path.GetTempPath (). Que outras coisas assim?

Foi útil?

Solução

Veja como aprender e a resolver problemas de confiança.

1) Procure em seu Windows \ Microsoft.NET \ Framework [sua versão] pastas \ Config para os arquivos:

  • web.config (este é o arquivo de configuração raiz)
  • web_mediumtrust.config
  • web_hightrust.config

2) Alterar o web.config para dizer

<trust level="Medium" originUrl="" />

3) Tente seu aplicativo ASP.NET. Mina falhou com um erro de permissão.

4) Diff o web_mediumtrust.config e web_hightrust.config em uma ferramenta de comparação, como WinMerge.

5) Definições de cópia da alta ao meio um de cada vez e ver como eles afetam seu app. No meu caso, a mensagem de erro a que se refere ConfigurationPermission, por isso foi fácil de diagnosticar.

Se você pode fixar para baixo as linhas precisas no arquivo web_mediumtrust.config que estão bloqueando você, então talvez você possa compartilhar isso com sua empresa de hospedagem e ter uma melhor chance de resolver as coisas.

Mais documentação aqui:
http://msdn.microsoft.com/en-us/library/aa302425. aspx

@Oli, meu aplicativo é hospedado no GoDaddy e eu tinha que fazer algumas soluções em código quando comecei a usar Lucene.NET. Eu tive que modificar o código fonte Lucene.NET para não usar GetTempPath e System.IO.FileInfo.

Outras dicas

Quem pode ter certeza? É por isso que você deve desenvolver-se com um nível de confiança de set meio em seu web.config.

 <trust level="Full|High|Medium|Low|Minimal" />

A maioria compartilhada anfitriões não usar um verdadeiro ambiente de confiança média porque restringe algumas coisas que são muito vital. Outros restringem algumas configurações extras por suas próprias razões anais.

A melhor coisa que você pode fazer é pedir seu anfitrião o que as configurações que eles usam para ASPNET. Pergunte para as especificações do nível de confiança que eles estão usando. Descobrir os limites de memória. Uma vez que você tem aqueles detalhes que você deve ser capaz de replicar o cenário em um nível local.

Se eles não vão te dizer, basta configurar seu aplicativo para executar em meio confiança mas (obviamente) não vai necessariamente funcionar se eles estão usando um nível de confiança modificado.

Aqui está algumas informações sobre como configurar os níveis de confiança no IIS .

Em geral, o único problema que tenho que correr para é: Se você está empurrando os conjuntos, certifique-se de permitir que os pedidos parcialmente confiáveis ??(que é uma meta-tag Assembly) caso contrário você não será capaz de usá-los.

Aqui está um extrato de do GoDaddy confiança média página de informações :

Aplicações operando sob um Médio nível de confiança não têm acesso ao registro, sem acesso ao log de eventos do Windows, e não pode usar ReflectionPermission (Mas pode usar a reflexão). Tal aplicativos podem se comunicar apenas com um intervalo definido de endereços de rede e acesso ao sistema de arquivo é limitado a diretório virtual do aplicativo hierarquia.

Usando um meio impede nível de confiança aplicações de acessar compartilhada recursos do sistema e elimina a potencial de aplicação interferência. adicionando OleDbPermission e OdbcPermission permite que aplicativos usar esses provedores de dados para acesso bancos de dados. WebPermission é modificado para permitir a saída HTTP e HTTPS tráfego.

Isso não pode mapear exatamente o que você vai ter que trabalhar ao redor com seu anfitrião (a menos que você está com GoDaddy), mas é um exemplo típico.

Certifique-se de qualquer terceiros bibliotecas / frameworks (Castelo vem à mente) são de construção (ou pode ser construído) em meio confiança.

A biblioteca System.Runtime.Serialization é totalmente indisponível na confiança média.

I codificado em torno deste para JSON serialização / desserialização e descobriu da maneira mais difícil. Demorou uma semana para obter um associado para confirmar que as restrições de confiança média eram os culpados. I terminou discado troca empresas de hospedagem como um resultado.

No confiança média, pelo menos no meu anfitrião, chamadas P / Invoke não estão disponíveis, ou seja, utilizando [DLLImport] para chamar um componente COM não está indo para o trabalho.

-Edoode

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top