Pergunta

Devo dizer que, até agora, eu provavelmente apenas sido danado sorte em que eu nunca me deparei com os problemas associados a um site em execução em confiança média. Eu já desenvolvido apenas aplicativos de intranet ou passou a ter o uso de uma empresa de hospedagem que é executado em confiança total. Mas o anfitrião Estive pediu para usar para uma recente corridas projeto em confiança média, então eu estou tentando obter meu aplicativo executar este. Par de perguntas - eu desenvolvo em Windows XP. Can IIS lá ser configurado para confiança média (mais fácil de depurar) e / ou é uma configuração web.config? Há uma riqueza de informações sobre este assunto e a curva de aprendizagem é íngreme.

Em segundo lugar, depois de um monte de mexer e remover o código, acho que esta linha está causando um erro de permissões:

Para cada FieldInfo Como FieldInfo Em Type.GetFields (BindingFlags.Instance Ou BindingFlags.NonPublic Ou BindingFlags.Public)

Alguém pode esclarecer este é um possível candidato, esp. essa bandeira NonPublic? Esta é cópia & código colado (Coding Horror destacou o risco de isso), então eu realmente nunca pensei sobre. Presumo que o circuito é através de cada campo no objeto ambos os campos públicos e não-públicos - e eu li que campos protegidos são proibidos com uma reflexão sobre confiança média

.

Cheers, Rob.

Foi útil?

Solução

Desculpe, Reflexão com NonPublic é equivalente a confiança total.

Se de alguma forma eu não tinha confiança total, mas teve reflexo NonPublic, eu poderia aproveitar que em mudar o meu próprio nível de confiança de código (cordas graváveis, etc).

Outras dicas

Sim, um site sobre XP pode ser configurado para funcionar em meio confiança:

Na seção adicione a seguinte:

<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>

E você está lá.

O que você pode muito bem encontrar é que a maioria dos anfitriões executar seus sites em um ambiente de confiança ligeiramente elevada "Medium", com alguns direitos adicionais além do padrão -. Seus técnicos deve ser capaz de dizer o que as diferenças que eles têm se houver

Se você der uma olhada em:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

você verá as configurações padrão que são aplicadas.

A reflexão é uma das principais coisas que é limitado em Medium confiança - a partir das Observações sobre o GetFields página:

Se o campo solicitado é não-públicos eo chamador não tem ReflectionPermission para refletir objetos não-públicos fora da montagem atual, este método retorna uma referência nula (Nada no Visual Basic).

Como este tem o potencial para retornar nulo você provavelmente deve ser a verificação de nulo antes de começar a iteração através dele, ou verificar que FieldInfo não é nulo / nada antes de usá-lo.

Eu estou indo para marcar isto como fechado como ninguém respondeu, e também foi apenas provando muito problemático para tentar re-código. O programa não está mal escrito, mas usa a reflexão muito fortemente para o mapeamento objeto e para ser honesto, é mais fácil encontrar uma empresa de hospedagem que suporta confiança total.

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