Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

filipescoob

Erro de DLL + Session

Recommended Posts

Bom dia meuS amigoS, ai vai uma bucha que não consegui resolver por favor replique esta duvida para os colaboradores Jeday de vossa empresa CENARIO.O caso e o seguinte temos servidor web com windows 2003Este hospeda um web site em asp.net que consome uma dll win 32.O framework instalado e o 1.1.PROBLEMA.quando um determinado numero de usuários conectam-se no web site os dados carregados na sessão um(1) por exemplo se misturam com os dados carregados na sessão oito(8) por exemplo. Já verificamos que o servidor esta configurado com opção de acessos ilimitados no IIS. ** ENTAO TIVEMOS A SEGUITE IDEIA muito feio por sinal mas funcionou temporariamente. fizemos copia de nossa dll por exmplo dll1, dll2, dll3, ddl4 .....dll15e fizemos um tratamento por sessões exemplo sessão 1 carrega dll1, sessão 2 carrega dll2 e assim sucessivamente.QUESTÂOeste código é horrível e paliativo.??? vocês já tiverem este tipo de problema com dll win32 sendo carregada em dot.NET.Espero que alguem ja tenha passado por isso e possa me ajudar obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz este exemplo para ilustrar o que consigo fazer em delphi e justamente quero fazer no VB

 

Na parte onde uso a dll criada num projeto delphi eu declaro um tipo que é uma função

 

Depois carrego a minha dll num ponteiro chamado MyHandle em seguida através da função GetProcAddress

 

Capturo no endereco de memória MyHandle a função dobro e gravo na minha variável dobro que é do mesmo tipo da função

 

Veja a declaração TDobro = Function ( N: Integer): Integer; stdcall;

 

 

 

Neste exemplo demonstro como acho que resolveria meu problema na web

 

Penso em carregar dinamicamente dll sendo refenciadas através de ponteiros.

 

Será que é possível fazer isto em vb.net??

 

 

 

Veja isto

 

Declare Function LoadLibrary Lib "kernel32" Alias _	  "LoadLibraryA" (ByVal lpLibFileName As String) As Integer	Declare Function FreeLibrary Lib "kernel32" Alias _		  "FreeLibrary" (ByVal hLibModule As Integer) As Integer	Declare Function GetProcAddress Lib "Kernel32" Alias _	 "GetProcAddress" (ByVal hModule As Integer, _	 ByVal lpProcName As String) As Integer

 

Atraves destas declarações em vb eu consigo utilizar funcoes do WIN32 dentro do vb.net

Eu so não consegui ainda declarar uma variável que seja do tipo de uma função e depois

Capturar o endereço na memória atribuindo a esta variável.. para melhor exemplificar mostro como

Faço isto em delphi no código abaixo.

 

 

 

******************** esta é minha dll **************************library   MinhaDLL;uses  SysUtils,  Classes;Function Dobro(N : integer): integer;  begin	result := n * 2;  end;  function Triplo(N : integer): integer;  begin	result := n * 2;  end;   exports Dobro, Triplo;{$R *.RES}beginend. ******************** usando minha dll num projeto delphi **************************uses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls; type  TDobro   = Function ( N: Integer): Integer; stdcall;type  TForm1 = class(TForm)	Button1: TButton;	procedure Button1Click(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end; var  Form1: TForm1;	MyHandle: THandle; implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);var dobro  : TDobro;begin  MyHandle := LoadLibrary( 'C:\_MINHADLLDELPHI\MINHADLL.DLL' );  @Dobro	:=  GetProcAddress( MyHandle, 'Dobro' );  showmessage(intToStr(dobro(2)));end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.