none
Alguém usa WindowsImpersonate ? RRS feed

  • Pergunta

  • Boas senhores, alguém usa WindowsImpersonate  para passar as credenciais de acesso quando necessário?

    Tenho o seguinte cenário, acesso uma maquina na rede onde preciso passar o domínio, usuário e senha, faço isso através de WindowsImpersonate. Este acesso é feito através de uma aplicação windows servives...o detalhe é que com frequência perco o acesso e recebo  a msg Token cannot be zero....

    Para resolver o problema, tenho que restartar o serviço....

    Alguém ja passou por isso?

    obrigado e t+

    terça-feira, 9 de outubro de 2012 14:31

Respostas

  • Det, Bom dia

    Passei por um problema semelhante, só que ao invés de ser com o WindowsImpersonate eu estava utilizando o FileSystemWatcher e quando ele perdia conexão com a rede, só voltava a funcionar se o serviço fosse reiniciado.

    Para resolver o problema, fiz da seguinte forma, sempre que da erro eu faço com que ele volte a monitorar através do seguinte código

     source.EnableRaisingEvents = false;
            int iTimeOut = 30000;
            int i = 0;
            while (source.EnableRaisingEvents)
            {
                i += 1;
                try
                {
                    source.EnableRaisingEvents = true;
                }
                catch
                {
                    source.EnableRaisingEvents = false;
                    System.Threading.Thread.Sleep(iTimeOut);
                }
            }
    No meu caso eu consegui resolver, sei que o seu é bem diferente, mas fica a dica.


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    • Marcado como Resposta DET1 quinta-feira, 18 de outubro de 2012 13:23
    terça-feira, 9 de outubro de 2012 14:52

Todas as Respostas

  • Det, Bom dia

    Passei por um problema semelhante, só que ao invés de ser com o WindowsImpersonate eu estava utilizando o FileSystemWatcher e quando ele perdia conexão com a rede, só voltava a funcionar se o serviço fosse reiniciado.

    Para resolver o problema, fiz da seguinte forma, sempre que da erro eu faço com que ele volte a monitorar através do seguinte código

     source.EnableRaisingEvents = false;
            int iTimeOut = 30000;
            int i = 0;
            while (source.EnableRaisingEvents)
            {
                i += 1;
                try
                {
                    source.EnableRaisingEvents = true;
                }
                catch
                {
                    source.EnableRaisingEvents = false;
                    System.Threading.Thread.Sleep(iTimeOut);
                }
            }
    No meu caso eu consegui resolver, sei que o seu é bem diferente, mas fica a dica.


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    • Marcado como Resposta DET1 quinta-feira, 18 de outubro de 2012 13:23
    terça-feira, 9 de outubro de 2012 14:52
  • Bruno, obrigado pelo retorno.

    Vou analisar sua dica...

    terça-feira, 9 de outubro de 2012 15:42
  • DET1,

    Como está sua questão? Foi resolvida? Se Sim nos conte o que foi feito para que outros possam usufruir da mesma solução.


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    terça-feira, 16 de outubro de 2012 12:51
    Moderador
  • Cara ainda não resolvi não...

    Fiz um paliativo...

    Como a aplicação é um windows services, e tenho que ficar trocando as credenciais muitas vezes, percebi que o problema ocorre depois de um determinado tempo com muitas trocas, fiz um calculo a cada x tempo restarto o serviço e por enquanto não deu mais erro...como estou em uma pastelaria... quando der retomo este caso ou ate o próximo erro.. achando uma solução compartilho aqui....

    abs

    terça-feira, 16 de outubro de 2012 16:43