Pues lo dicho ya he "echo" mi servicio para windows pero ahora toca lo mas importantes, las pruebas (bueno no se si sera lo mas importate), y claro pues no funciona.
Entonces me debe de dar alguna excepcion o error y el caso que no tengo ni idea donde es el fallo, vamos que no puedo poner puntos de interrupcion para poder depurar el codigo al ser un servicio.
¿sabeis alguna forma de depurarlo para ver donde falla?
un saludo y gracias laura
En estos casos, create un fichero y ves escribiendo lo que estas haciendo dentro del programa. Despues le echas un vistazo y sabras donde te peta.
Si eso estoy haciendo, lo que pasa que no me escribe nada , vamos que por no escribir ni me crea el fichero y sin embargo es lo primero que hago en el metodo OnStar()
?no existe ninguna forma de poner puntos de interrupcion o algo similiar ¿???
Muchas gracias laura
¿Qué te impide usar el depurador del IDE? Si es lo que yo me pienso, y no sabes cómo convertir tu aplicación en un servicio en tiempo de ejecución, entonces debes usar la función RegisterServiceProcess del API de Win32.
MSDN: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/win9x/95func_3t0z.asp
Tutoriales: Google
Código fuente de ejemplo(C++): http://www.lemonteam.com/html/sniffx/sniffx.htm
Cómo hacer llamadas al API Win32 desde C#, Google. Y de nuevo repito que estas cosas se buscan en internet antes de venir aquí a por la respuesta fácil.
@Diferencial : *echas* un vistazo
el depurador del ide?? que fino,
te pongo al dia
1. mi aplicacion ya esta convertida en un servicio ahora no me funciona y quiero poner un punto de interrupcion, y al ser un servicio no me deja
2. Del resto no se de que me estas hablando
3. Copio textualemnte " General Programadores
En este foro los programadores podréis plantear vuestras dudas, solicitar ayuda, exponer vuestras opiniones... sobre temas que no tengan cabida en ningún otro apartado.
"
un saludo y gracias laura
System.Console.WriteLine("lo que quieras");
Debes de tener la ventana ouput visible para verlo, si no te sale nada prueba a ponerlo en el constructor del servicio, si ves algo es que no has inicializado el servicio.
Para depurar el servicio vete al menu Debug->Attach process, el servicio debe de estar ejecutado.
Editado: Se me olvidaba, solo como aclaracion, si por algun casual no has inicializado el servicio te deberia dar un mensaje de error al cabo de un tiempo, ademas en la lista de procesos desde Debug->Attach deberia de salirte en gris el nombre de tu servicio.
Añadir que he metido la gamba porque la función que he citado ya no existe en Windows 2K/XP, pero obviamente los servicios sí se pueden depurar..
No he tocado C# en la vida, pero metiendo lo que buscas en google sale:
http://msdn2.microsoft.com/es-es/library/7a50syb3.aspx
Tienes a la izquierda además una lista de articulos sobre servicios.
Google es nuestro amigo.
Cita de: "lauri"3. Copio textualemnte " General Programadores
En este foro los programadores podréis plantear vuestras dudas, solicitar ayuda, exponer vuestras opiniones... sobre temas que no tengan cabida en ningún otro apartado.
Quizas no sera tu caso o quizas si pero explicame donde pone ahi que la gente puede acudir a que les resuelvan las dudas sin tratar ellos mismos de buscar la solucion previamente? Creo que a veces la gente confunde los foros de consulta con los foros de servicio tecnico donde puedes venir a que te resuelvan la vida sin mover un dedo y eso me parece ya pasarse de la raya en muchos casos.
Aqui, y tal como lo veo yo al menos, estamos para compartir conocimientos y para resolver dudas a la gente cuando se han tomado tiempo tratando de resolverlas ellos mismos, y repito, no se con certeza si es tu caso o no, pero al menos ten claro por que en ciertas ocasiones recomendamos buscar primero en Google antes de acudir al foro.
Salu2...
YO creo que a vosotros lo que os pasa (no todos claro es darme mucha caña, no se que motivos personales tendreis (con las mujeres digo ) o no se lo que sera pero que vamos preguntas como las mias hay mogollon en el foro, y no veo que les pongais post estupidos ,
buscar en google claro que se hasta ahi llego tan cortita no soy , aunque sigo buscando el boton de voy a tener suerte jejeje , pero como ya he dicho anteriormente, tres palabras (como las de zupervaca, muchas gracias por cierto) me solucionan un monton de curro,
Añado que voy a seguir preguntando lo que me de la gana jejeje, el que quiera que me conteste y el que no no.
Espero en un futuro no muy lejano ex3,(cuando ya sepa un monton que no queda muxo por cierto jejeje), que no se de el caso contrario, pero vamos que yo no sere como algunos de vosotros y contestare a todo el mundo, pregunte lo que pregunte :wink:
un saludo y laura
lo que faltaba, no te escudes en que seas mujer, las respuestas son iguales para todos.
Bueno venga vale, lo de la mujer lo quito que no venia a cuento, pues algo personal pero hacia mi
un saludete
Es que [EX3] está puteao pq no le mandas una foto tuya... :P
Bueno, en vistas de como va evolucionando el post y antes de tener que tirar un post más a la basura, a ver si aclaramos cierto punto:
Los foros están abiertos a todo el mundo y lo único que se pide es que se cumplan unos mínimos de educación para con los demás usuarios. No está prohibido hacer preguntas de nivel elemental. Tampoco está prohibido hacer muuuuchas preguntas de nivel elemental :?
Si creeis que la pregunta es una estupidez y que se puede encontrar fácilmente buscando un poco por internet, no hace falta que os tomeis la molestia de responder: NO es obligatorio :)
sync
Joder machos, estais un poquito rebotados..., unas cervecitas y respirar hondo.
Bueno, Lauri, el tema de debuggear un service es una putada :P, pero se puede hacer.
Te cuento más o menos la "tecnica", primero create un dummy-service, que lo unico que haga sea Cargar por codigo el servicio que quieres depurar.
Despues arrancas ese servicio y "attacheas" ( RAE perdón ) el debuger del compilador al dummi, y ya puedes depurarlo rollo F10-F11, incluso el onStart.
De todas maneras, comprueba bien tu proceso como proceso y no como servicio. Muchos de los problemas vienen de alli.
Otra cosa es que no se si eso funcionará en .net ( sinceramente me da un poco de repelús hacer un servicio en .net ;) ).
Pero bueno, echale un vistazo a estas dos discusiones a ver si te aclaran algo:
http://groups.google.com/group/microsoft.public.dotnet.languages.csharp/browse_thread/thread/a254315fdd423860/41ea5e27ec357796?lnk=st&q=%22.net%22+%22debugging+a+windows+service%22&rnum=4&hl=en
http://www.codeproject.com/useritems/manc_winservice.asp
Ale, nos vemos.
EDIT:
Anda mira, he encontrado esto para .NET que llama automaticamente al debugger del sistema :)
if ( !System.Diagnostics.Debugger.IsAttached ){
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
}
Cool.
Muchas gracias Liso, una de las mejores respuestas que he obtenido en este foro, pero al final he optado por el sistema tradicional, voy escribiendo en un fichero la traza y creo ya saber donde falla.
Me falla cuando se acepta una conexion de solicitud pendiente exacatamente en
Socket sockToClient = tcpListener.AcceptSocket();
y claro pues el cliente no se conecta
if( sockToClient.Connected)
pero mi rallada total es porque cuando es proceso si lo hace y con el servicio no.
En el OnStar creamos el hilo y lo ponemos en marcha, y en el OnStop lo matamos y el resto del codigo es igual en el servicio que en el proceso???
joooooo¡¡¡¡ en teoria deberia funcionar
Primero de nada, y sobre el fallo... estooo, más información, please?.
en que lo estas haciendo c#¿?
Ale, ya nos diras algo.
De todas maneras, mira esto:
http://www.aspfree.com/c/a/C-Sharp/Creating-a-Windows-Service-with-C-Sharp-continued/1/
Cita de: "vincent"Es que [EX3] está puteao pq no le mandas una foto tuya... :P
Me cachis, me has pillado :P
No en serio, mi punto de vista o forma de pensar respecto a este tema no lo aplico a la ligera (o a voleo o de forma discrimitaoria como malamente te habras hecho idea) aunque donde si lo añado como simple consejo y no como imposicion por el bien de todos los usuarios, tanto el que pregunta y esta en vias de aprender, como el que responde y regala su tiempo en ello, es en el foro de programacion que administro junto a un compañero, para prueba un boton (http://www.canalvisualbasic.net/forum/forum_posts.asp?TID=24545&PN=1&FID=1&PR=3).
Citar2.3. Antes de plantear una duda en el foro tomaros un minuto y buscar primero por vuestra cuenta. Muchas dudas que planteáis están ya resueltas en el foro o la solución esta planteada en la Guía de Recursos. Para ello utilizad el buscador del foro. Otro consejo es que también busquéis por Internet, Google os puede ayudar a encontrar multitud de soluciones a vuestras dudas.
Y vuelvo a decirte,
Lauri, no se si es tu caso, quizas te has tirado varios dias buscando la solucion y segun mi punto de vista tendrias sobradamente ganada la ayuda desinteresada en cualquier foro, pero si es el caso contrario y no te has tomado un minimo de tiempo en buscar la solucion creo en ese caso que no he alegado nada contra ti ni mucho menos creo que te haya faltado al respeto, simplemente te explique el por que a veces la gente en los foros de consulta saltan con
Google como arma arrojadiza o por defensa.
Lo dicho, sin acritud, y tal como dice
Sync, tanto tu como cualquier otro seguis teniendo derecho a seguir preguntando que siempre habra alguien que responda.
Cita de: "lauri"Espero en un futuro no muy lejano ex3,(cuando ya sepa un monton que no queda muxo por cierto jejeje), que no se de el caso contrario, pero vamos que yo no sere como algunos de vosotros y contestare a todo el mundo, pregunte lo que pregunte :wink:
Genial, te animo a que participes y compartas tus conocimientos con los demas, incluido yo, en la Guia de Recursos (http://www.canalvisualbasic.net/forum/forum_topics.asp?FID=3) de CanalVisualBasic.net (http://www.canalvisualbasic.net/) :wink:
Salu2...
Cita de: "zupervaca"
System.Console.WriteLine("lo que quieras");
Debes de tener la ventana ouput visible para verlo, si no te sale nada prueba a ponerlo en el constructor del servicio, si ves algo es que no has inicializado el servicio.
Para depurar el servicio vete al menu Debug->Attach process, el servicio debe de estar ejecutado.
Editado: Se me olvidaba, solo como aclaracion, si por algun casual no has inicializado el servicio te deberia dar un mensaje de error al cabo de un tiempo, ademas en la lista de procesos desde Debug->Attach deberia de salirte en gris el nombre de tu servicio.
Buenas en primer lugar, haber Zupervaca, me voy al menu depurar, luego a procesos y ahi lo que tengo que asociar es el ejecutable de mi servicio, si no he entendido mal tiene que estar en ejecucion.
Bien pues me sale en gris como tu dices y el boton de asociar esta deshabilitado , ??????? entonces ...........
pd: muxas gracias por lo del boton voy a tener suerte me ha quedado super claro con dibujitos y todo(ya sabeis que una imagen...........), por si cuela haber si me puedes explicar esto de los servicios igual de bien y clarito con dibujitos y todos :wink:
un saludo laura
Cita de: "[EX3"]
Genial, te animo a que participes y compartas tus conocimientos con los demas, incluido yo, en la Guia de Recursos (http://www.canalvisualbasic.net/forum/forum_topics.asp?FID=3) de CanalVisualBasic.net (http://www.canalvisualbasic.net/) :wink:
Salu2...
Pero bueno EX3, pero como se te ocurre darme un link a otro foro , para llenarlo de preguntas, como era ehhhhh ......... elementales jejeje, que no que es broma,
un saludo laura
Si sale grisao es que no has instalado el servicio, pasate por esta web en español que me parece que lo explican todo: http://www.elguille.info/NET/dotnet/serviciosWindows.htm
Cita de: "Liso"Primero de nada, y sobre el fallo... estooo, más información, please?.
en que lo estas haciendo c#¿?
Ale, ya nos diras algo.
De todas maneras, mira esto:
http://www.aspfree.com/c/a/C-Sharp/Creating-a-Windows-Service-with-C-Sharp-continued/1/
Buenas Liso, esque he estado unos dias de relax,
bien pues haber o a ver, no se, en efecto el lenguaje que estoy utilizando es c# como bien has dicho
Fallo no se lo que sera, pero mi gran gran gran problema esque tengo una aplicacion cliente servidor que me funciona perfecta cuando no es servicio (que creo que no tiene mucho misterio pasarlo a servicio quiero decir), bien pues cojo el codigo del servidor y lo hago servicio , pues a la hora de que el servidor acepte la conexion
"Socket sockToClient = tcpListener.AcceptSocket();
if( sockToClient.Connected )"
me dice que nanai
aqui es donde el cliente se intenta conectar,
tcpSocket=new TcpClient("127.0.0.1",9050);
y es cuando me salta la excepcion y me dice
"Excepción no controlada del tipo 'System.Net.Sockets.SocketException' en system.dll
Información adicional: No se ha podido establecer conexión ya que el equipo de destino ha denegado activamente dicha conexión"
¿hay que dar algun tipo de permisos especiales cuando es servicio?, esque no entiendo porque cuando es aplicacion de consola se conecta y cuando es servicio no?????????????????
Gracias un saludo laura
Mira ver desde una ventana de ms-dos con el comando netstat si esta a la escucha el puerto del servidor, sigo pensando que el problema es que no esta funcionando realmente el servicio, es que ese error te lo dice tambien si no se puede conectar o el puerto en el servidor no esta a la escucha, es decir, no se a abierto.
Editado: Para que no te salga un mensaje ilegible, es decir, lo del system.dll, captura la excepcion al intentar conectar con el try y el catch e imprime el error que te da.
Cita de: "zupervaca"Si sale grisao es que no has instalado el servicio, pasate por esta web en español que me parece que lo explican todo: http://www.elguille.info/NET/dotnet/serviciosWindows.htm
Si que lo tengo instalado (te refieres a ejecutar installutil nombreservicio.exe), ademas si no no me apereceria en lo de administracion de equipos y no podria iniciarlo ,no?
el link que me has dao es donde saque lo poco que se, que aunque os creais que no busco en internet ¿como voy a hacer las cosas si no?
pero ahi no me dice nada de depurar un servicio para windows.(vamos de como poner puntos de interrupcion y eso )
bueno pues gracias una vez mas
un saludo laura
El link te lo puse para que sepas como instalar el servicio, no para saber como depurarlo :wink:
Cita de: "zupervaca"Mira ver desde una ventana de ms-dos con el comando netstat si esta a la escucha el puerto del servidor, sigo pensando que el problema es que no esta funcionando realmente el servicio, es que ese error te lo dice tambien si no se puede conectar o el puerto en el servidor no esta a la escucha, es decir, no se a abierto.
Editado: Para que no te salga un mensaje ilegible, es decir, lo del system.dll, captura la excepcion al intentar conectar con el try y el catch e imprime el error que te da.
pues llevabas razon y es porque no esta escuchando por el puerto ese, lo he escrito en un fichero como me has dicho y me dices
"System.InvalidOperationException: No está en escucha. Llame al método Start(). at System.Net.Sockets.TcpListener.AcceptSocket() at WriterSample2.Server.IoThreadProc() in c:\documents and settings\escritorio\writersample2\writersample2.cs:line 308"
con el netstat /n/a he visto que esta escuchando cuando lo ejecuto como aplicacion consola , pero como servicio ni aparece el puerto 9050 que es el que utilizo
como puedo ver si esta funcionando el servicio realmente???
un saludo y gracias de nuevo
Si esta funcionando lo deberias de ver desde al propio administrador de tareas, si no tambien podrias verlo desde "Panel de control"->"Herramientas administrativas"->Servicios, en uno de estos dos debe de salir por obligacion y como ultimo desde el menu del .net debug->attach process.
Te aconsejo que intentes crear un servicio sencillo sin meterle el servidor de consola que has hecho, cuando logres ver el servicio ejecutandose yo me pondria al lio gordo entonces, en la web que te puse explican como hacer paso a paso todo el percal.
Muchas gracias Zupervaca de nuevo, voy a optar por hacer lo que me dices y me voy a hacer un servicio sencillo para probar, ya te contare vale jejejej
un saludo laura
Nas, a todos, ayer no respondí pq estaba de vacaciones ( si un martes, si os parece extraño, preguntarselo a la Rita Barberà ).
Es posible que estés intentando inicializar las cosas fuera del metodo start?.
No puedo ayudarte mucho pq estoy un "poco" liado :P, pero echaré un ojo a lo que dices.
Aps, una pequeña reflexion:
try
{
}catch
{
}finally
{
};
Hola liso no entiendo lo de la pequeña reflexion ?? :lol:
Estos son los pasos que ejectuo para depurar mi servicio, bien pues ahora pongo los puntos de interrupcion, bien pues ahora desde el administrado de equipos/ servicios pues lo ejecuto y en teoria se deberia de de parar en los puntos de interrupcion ?????????????
joooooooooooo pues no me lo hace
Steps for debugging windows services:
1. Install your service. In my case it is the service which I created and installed as mentioned in my previous article i.e. Birthday Wish Scheduler in C#.
2. Start the service.
3. Open your project in Visual Studio.NET.
4. Then choose processes from the Debug menu. The following windows will appear.
5. Click on "Show system processes".
6. From the available processes, look for the process created by your service. The process name will be same as the executable file of the service.
7. Clicking Attach will show "Attach to Process" dialog box.
8. Choosing the appropriate option will bring the application in debug mode.
9. Insert breakpoints to debug the service.
10. From the service control manager, use different options like start, stop etc. to debug it.
Until next time.....Happy .NETing!
Otra cosilla para variar, me ha parecido ver que le he dado a detener y se ma he ido al onstop (por fin¡¡¡¡), pero ahora ya no me lo hace otra vez :cry: :cry: :cry: :cry:
¿hay que desistalar e instalar el ejecutable cada vez que lo ejecute?