Quer aprender Delphi for PHP?

Caros amigos delphianos, estão com dificuldades em encontrar um bom material sobre Delphi for PHP? Visite a Comunidade Delphi so PHP e veja algumas notícias sobre as novas tendências desta ferramenta. Lá você vai encontrar dicas, downloads, artigos, videos e muito mais sobre o Delphi for PHP. Para se cadastrar é muito simples, rápido e seguro. Clique aqui e seja o mais novo membro da Comunidade Delphi so PHP e bons estudos.

No mais até a próxima.


sábado, 10 de janeiro de 2009

Erro de permissão ao acessar DLL no servidor.

Olá pessoal,

vou postar estar dica, pois me deu um trabalhão para descobre... rsrsrsr
Vamos lá:

recentemente me deparei com um erro (That assembly does not allow partially trusted callers), que ainda não tinha visto no .NET. Ai, começou pra mim, um saga de 26 horas para tentar colocar o site do meu cliente no ar novamente. Fiz de tudo, mas nada tinha explicação, pois na minha maquina (localhost) funcionava perfeitamente. Com isso, ficava difícil descobri o erro se não podia debbuga-lo. Até que de muito pesquisar, descobri de tinha algo há ver com permissão no servidor (provedor) na minha bin (pasta aonde ficam as dlls). A parti daí, já passei a ter um luz no final do túnel, rsrsrs. Passei então, a procurar por permissões em servidores, até descobrir, que alguma das minhas DLLs não tinha permissão para ser executada no meu provedor, pois por default de configuração deles o trust level era igual a medium (trust level="medium" (importante: Abra e feche a tag trust)), com isso, eu não consegui acessar uma das DLLs da minha aplicação.

Agora, vamos ver o que tive que fazer para contornar essa situação. Depois de pronto é bem simples, mas saber do zero o que fazer é bem diferente rsrsrs. Vamos lá.

A primeira coisa é editar o AssemblyInfo.cs que se encontar na pasta properties do projeto. Lá, você vai por esta linha de código: [assembly: AllowPartiallyTrustedCallers], vai saber aonde... Está pronto, esta parte...

Agora, vamos a segunda coisa a fazer. Abra seu web.config, em seguida coloque esta linha (trust level="Full" (importante: Abra e feche a tag trust)) de código logo abaixo do .Pronto, agora você passou a ter esta permissão no seu provedor.

Vou explicar o que significa "level=Full". Geralmente, nos provedores, esta opção vem definida como "medium", com isso em alguns casos (geralmente dlls acesso a banco) você passa a não ter mais permissão (ainda não descobri o por que disso). Colocando level igual a Full, você falar que sua aplicação tem total direito de acesso as DLLs. Com isso, este erro não acontecerá mais nas suas aplicações.

Importante: Não sei informar até que ponto isso pode ser bom. Mas por enquanto resolveu meu problema. Vou pesquisar se isso pode trazer algum problema ou não. Quando descobri, posto aqui no meu blog.

No mais, espero ter ajudado

Parceria