Fórum WebService .Net usando Dll win32 #344446
13/08/2007
0
Abraço.
Quartieri
Curtir tópico
+ 0Posts
13/08/2007
Ecq
Olha só, estou fazendo um webservice para uma empresa mas estou com um problema.
Podes me ajudar?
É o seguinte, criei um WS para acessar uma DLL para fornecer as funções da DLL na web.
Esta DLL faz tratamento de dados, por exemplo: padroniza nomes, endereços, ceps, cargos, etc.
Ela lê um banco local para fazer o tratamento dos dados.
Mas estou com problema no seguinte, por ex, na função ScrubberCargo. Esta recebe dois parâmetros, um string que é o nome do cargo e outro o tamanho padrão.
Se eu passar “Gerente de Produção“ a função deveria retornar “Ger. Produção” mas ela retorna a mesma coisa passada. Na verdade não é o retorno é um parâmetro passado como referencia (em c# ref).
Tens alguma experiência com isto?
Já fiz varias coisas e não dá certo. Já utilizei Ansi e Unicode na DLLImport do .Net. Já utilizei código unSafe (char * nmCargo) também. Não sei mais o que fazer.
Grato
Eder.
Gostei + 0
13/08/2007
Quartieri
vou detalhar mais meu problema:
minha função principal na dll lê um XML com a informação sobre minhas tabelas no banco e monta os SQLs se baseando neste xml, estou usando o CoInitialise antes de criar o meu TxmlDocument, no .exe de teste tudo funciona que é uma maravilha, mas no webservice não funciona.....Agradeço a ajuda.
Abraço.
Gostei + 0
14/08/2007
Ecq
Este é código no web service
[DllImport(´scrubber.dll´)]
public static extern int ScrubberCargo(ref string sCargo, int nTamanho);
//padronização de cargo
[WebMethod]
public int wScrubberCargo( string sCargo, int nTamanho)
{
string retCargo = sCargo;
try
{
return ScrubberCargo(ref retCargo, nTamanho);
/*Aqui o retCargo que recebe por exemplo “Gerente de Produção” deve retornar “Ger Producão” mas isto não ocorre*/
}
catch (Exception ex)
{
GravaLog(ex.ToString());
return 0;
}
}
Ficou mais claro.
Grato
Eder.
Gostei + 0
14/08/2007
Ecq
Experimenta trabalhar com Marshal para converter um tipo Managed para unManaged.
Tipo:
public static extern int ScrubberCargo([MarshalAs(UnmanagedType.LPStr)] string sCargo, int nTamanho);
Att,
Alex
Gostei + 0
14/08/2007
Quartieri
Gostei + 0
16/08/2007
Quartieri
Gostei + 0
17/08/2007
Quartieri
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)