Array
(
)

Funciona em Winform mas não funciona em ASP.NET!

Wilder_lopes
   - 07 abr 2006

Pessoal,

Criei um objeto COM em delphi que gera relatórios em PDF.
Preciso muito disponibilizar isso pela WEB através de minha aplicação
ASP.NET, mas não estou conseguindo de jeito nenhum. Peguei e, com o mesmo
código, desenvolvi em windows forms e funcionou normalmente.
A aplicação ASP.NET está conseguindo acessar a DLL, mas quando o meu objeto
COM vai instanciar a classe do quickreport(relatório) dá erro de acesso a
memória. É muito estranho, pois funciona normalmente com winforms...
Será algum problema de permissão? dei permissão de execução de scripts,
leitura, gravação e até de navagação nesse meu diretório virtual!

alguém pode me ajudar?

- é configuração do servidor?
- tenho como colocar diretivas (?) de segurança no meu objeto COM?

obrigado e conto com ajuda de todos!

abraços


Sanses
   - 12 abr 2006

Olá

Não vou ajudar, não usei com no .net ainda, mas me diga uma coisa, voce gera o relatório em memória ? Pq se a resposta for sim, não funcionará mesmo. Ou voce gera o relatório, salva no hd do servidor e depois disponibiliza pelo browser ?

[]´s
Sanses


Wilder_lopes
   - 12 abr 2006

No caso da WEB eu mandaria apenas o comando de salvar em pdf no servidor e retornar o caminho salvo para abrir no browser.
O meu problema é muito estranho. no caso da aplicação WEB acessando esse COM, está dando erro na hora que instancia a classe do quickreport. Como se não tivesse permissão pra essa... especificamente essa... muito estranho!


Sanses
   - 13 abr 2006

Olá

Realmente, acho que não tem permissão, mas tb acredito que não há como configurar isso... se entendi bem, está dando o erro pq voce está instanciando diretamente a classe, que a princípio não dá esse suporte.

No entanto há algumas maneiras de verificar se é este o problema, na função que gera o relátório, verifique se ela esta protegida ou coisas do tipo.

Não sei como vc implementou isso, mais acredito que a geração do relatório deveria ser feita pelo objeto com, e este retornaria apenas o nome do arquivo, que posteriormente seria carregado em um streaming...

[]´s
Sanses


Wilder_lopes
   - 13 abr 2006

Olá Sanses.
Deixa eu explicar melhor:

Tenho minha aplicação já feita em vcl funcionando e com alguns relatórios complexos.
Estou desenvolvendo uma aplicação ASP.NET que precisa exatamente desses relatórios. Minha primeira opção foi a de refazer todos os relatórios, mas além de eu não ter tempo, não faria sentido, pois já os tenho prontos.
Minha segunda idéia, foi extrair os relatórios da minha aplicacação (somente as classes do quichReport ex.: type meuRelatorio = class(TQuickReport) ) e criar uma nova aplicação COM.
Nessa aplicação COM eu apenas criei minhas interfaces e coclasses com minhas propriedades e a chamada para execução do relatório salvando o pdf em disco e retornando o nome do arquivo.

Fiz um piloto winform e funcionou perfeitamente.
Fiz o teste em webform e gerou o erro. Ele gerou o erro no momento que tento instanciar minha classe do quickreport.
Falta de permissão ao objeto COM eu não acredito que seja, uma vez ele ele ESTÁ acessando o objeto e gera esse erro.

Procurando na NET eu descobri que pode ser problema do quickreport e se fosse outra ferramenta (como rave) talvez funcionasse.

Após alguns testes, resolvi criar uma aplicação INTRAWEB e agora sim está funcionando perfeitamente.

Minha aplicação ASP.NET passa um XML para a aplicação INTRAWEB com os filtros e configurações do relatório. A aplicação INTRAWEB ficou encarregada de receber, ler e processar o XML e exibir o relatório PDF.

Ufa...

Obrigado!


Sanses
   - 13 abr 2006

Caro colega,

Fico feliz que tenha resolvido seu problema.
Acredito que não tenha funcionado com o asp .net pelo fato de que o IIS protege e restringe o acesso apenas ao domínio. Portanto, tenho quase certeza de que não funcionou pelo fato de sua aplicação estar ´presa´ dentro do dominio e podendo no máximo executar scripts da pasta com o mesmo nome.

Fora tudo isso, ainda tem o fato de que o quick report não tem suporte ao .net mesmo (pelo menos não que eu saiba).

Talvez caro colega, eu esteja falando até um monte de besteiras, mas pelo pouco que estudei a respeito do .net, é essa minha opnião.

[]´s
Sanses