Inquiridor
Attach do serviço criado no windows service

Pergunta
-
Bom dia galera!
Estou com um probleminha no attach to process.
Desenvolvi um servico utilizando o visual studio 2010 - em Windows Service, instalei o mesmo e inicie.
Preciso depurar o codigo da aplicacao, para isso tenho que ir no menu Debug - Attach Process. Depois encontrar o servico que eu criei e clicar no botao Attach (ESSE BOTAO QUE ESTA DESABILITADO PRA MIM). Para o servico ser um processo, o mesmo tem que estar startado. Já verifiquei isso e o servico encontra-se startado.
Abaixo a imagem do botao desabilitado:
Alguem sabe o porque está assim? Preciso depurar a macro, mas pra isso preciso attach o servico.
Obrigada
Att.,
Bruna
Todas as Respostas
-
Bruna, Bom dia
Habilitar a opção de [Show processes in all sessions] de um [Refresh] e veja se o seu serviço aparece
Bruno Viegas D. Ribeiro
Analista Desenvolvedor de Sistemas www.brunoviegas.com.br -
O servico já tem, como voce pode ver na imagem, o servico é o que está selecionado, nome dele é: Integracao_Automatica, oproblema é que o botao Attach nao habilita pra mim, mesmo eu marcando a opcao Show process in all sessions e dando refresh.
As pesquisas que eu fiz na internet fala que para o servico ser um processo ele tem que estar startado, e o mesmo encontra-se startado.
Entendeu?
-
Isso eu entendi
Eu não sei me explicar direito, mas se você fizer o que eu falei pode aparecer um outro processo onde o botão attach estará disponível.
Obs.: Você precisa executar o VS como administrador para conseguir fazer o Attach
Bruno Viegas D. Ribeiro
Analista Desenvolvedor de Sistemas www.brunoviegas.com.br -
Deu certo, aparaceu outro servico.
Outra duvida, para eu comecar a depurar o codigo já com os servico startado, como que eu faco para iniciar a depuração? Eu atachei o breackpoint está funcionando mais nao executando, pois o servico ja esta iniciado e instalado. Eu nao coloquei um timer no servico, fora a conexao com o oracle que eu fiz tem o metodo OnStart e OnStop.
Obrigada
-
Bruna,
Sempre que eu debuggei um serviço, só consegui fazer o Debugg fora do projeto do Windows Service,
Ex.:
Tenho um Projeto Windows Service
E tenho um outro Projeto com a Lógica do Serviço (Só aqui que eu consegui debugar)
Qual o Gatilho do seu serviço? ele será executado quando acontecer o que?
Bruno Viegas D. Ribeiro
Analista Desenvolvedor de Sistemas www.brunoviegas.com.br -
Por enquanto, ele so vai executar quando eu inicair o servico, mas isso vai ficar assim so para eu testar a minha conexao com o banco oracle, entao antes de iniciar o servico em ferramentas administrativas eu vou chamar a tela de configuracao do banco de dados e nessa tela tem um OK, esse ok vai me retornar se a conexao foi realizada com sucesso ou nao, mas nessa hora esta me retornando uns erros de conexao com o banco de dados, é ai que entra a minha necessidade de depurar o codigo, mas essa tela de configuracao do banco de dados só foi chamada quando eu instalei o servico com o InstallUtil, logo depois dessa execucao no VS do visual studio ai que a tefa da configuracao foi chamada.
Entao eu queria saber se precisa instalar novamente para essa tela ser chamada? Estou chamando a tela no seguinte metodo: ServiceInstall1_BeforeInstall
Futuramente o servico irá realizar automaticamente, quando o windows ligar.
Entendeu?
-
Entendi.
Uma dica, eu sempre faço isso quando preciso criar um serviço, eu crio dentro da solutions um projeto de teste (windows form) e eu faço tudo no windows form para depois colocar no serviço, assim fica mais fácil para depurar e encontrar os erros, sempre precisar ficar toda hora Desinstalando e instalando o serviço (sempre que qualquer linha for alterada você precisará fazer isso).
Pelo visto você esta começando a criar esse projeto agora, se for isso tente criar esse projeto de teste fica mais fácil para depurar.
Bruno Viegas D. Ribeiro
Analista Desenvolvedor de Sistemas www.brunoviegas.com.br -
Então, essa conexao com o banco oracle (a telinha de configuração), já até tem no windows forms, a pessoa que fez no windows forms na época tentou utilizar o windows services, mas nao deu certo, pois deu erro na bendita conexao do oracle por diversos motivos, é que utilizando o windows services e diferente né. Estou refazendo esse projeto novamente pois o certo é ser uma aplicacao do tipo de servico e nao windows forms.
O que terei que fazer hoje é, pegar essa conexao com o oracle que já está pronto no windows forms e pegar o codigo de um sistema que foi feito no visual basic 6(esse sistema do VB6 é uma aplicacao onde pega as informacoes de um cobol(o cobol nosso cliente ainda utiliza) e passar para o vb.net que o ideal seria um servico, pois nao vai ter design para o usuário final). É bem complexo, mas é isso ai.
Entao voce achaque devo fazer tudo primeiro no windows forms? Além da conexao do oarcle que já está pronta , tambem devo passar o codigo do VB6 para o windows forms e testar, depois no final passar para o windows service?
Mas a implementação do Windows Forms para o Windows Service não são muito diferentes? Será que será facil mudar para o WS depois?
Att.,
Bruna
-
Bruna, a implementação não é muito dificil não
se você quiser se aproximar mais ainda do windows service, poderia usar uma aplicação Console, que é quase a mesma coisas.
Para usar windows form, só tenha o cuidado de não usar controles visuais para mandar informação, por exemplo um MessageBox(), crie um arquivo txt e use como log por exemplo.
se você tomar cuidado para não usar elementos graficos, será bem simples para passar para windows service.
Uma outra dica para você ver qual o erro que sua aplicação deu, verifique o log do EventViewer que é registrado sempre que um serviço da erro
Bruno Viegas D. Ribeiro
Analista Desenvolvedor de Sistemas www.brunoviegas.com.br -
Vou pensar no que voce disse, talvez seja melhor mesmo fazer primeiro no windows forms, depois passo para o windows service.
Lembrando que nao poderei utilizar controles visuais, pois assim fica mais fácil passar para o windows service.
Obrigada pela dica Bruno.