Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005
-
24 nov. 2004 à 09:26
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005
-
26 nov. 2004 à 09:35
Bonjour,
J'ai developpé un service en Vb .Net qui met à jour l'heure et la date d'une machine avec ceux de l'horloge parlante.
Pour cela j'ai besoin de récupérer le contenu d'une page web ensuite j'effectue mon découpage.
J'utilise cette syntaxe pour récupérer la source de ma page web.
Dim sRet As String = System.Text.Encoding.Default.GetString(New Net.WebClient().DownloadData ("http://www.horlogeparlante.com"))
Cette syntaxe fonctionne parfaitement en mode application. Existe t'il une syntaxe similaire pour le mode service car cette syntaxe a l'aire de poser problème.
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 25 nov. 2004 à 18:23
Pas si ton service tourne sous un compte special car ceux ci n'ont pas de profile. Et le proxy IE est stocké dans le profile de chaque utilisateur. Sinon voir les methodes static (oups Shared en VB) de la classe Proxy :)
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 24 nov. 2004 à 10:31
Les service Windows qui tournent sous le compte LocalSystem n'ont pas d'acces au reseau (et donc au web). Essaie de modifier l'utilisateur de lancement de ton service, ca devrait suffir :)
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005 24 nov. 2004 à 11:08
Tout d'abord merci d'avoir répondu à mon message Crazyht.
Si j'ai bien compri il me suffit juste, dans ma classe Installer de modifier le compte en mettant "NetworkService" au lieu de "Localsystem".
Cependant j'ai une petite question, si je peux me permettre.
Mon service est déja enregistré sur ma machine et lorsque je l'enregistre de nouveau, il ne prend pas en compte le changement de compte. Existe t'il un utilitaire fourni avec le framework qui permettrait de désinstallé un service. (Un pe comme InstallUtil qui permet de l'installer)
En attendant, j'ai modifier le compte manuellement, en modifiant les propriétés du service.
Je me suis inspiré d'un service qui tournait sur un compte "Service Réseau". (Compte : NT AUTHORITY\NetworkService et MP : Pass du compte administrateur de la machine).
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 24 nov. 2004 à 11:29
InstallUtil /u comme uninstall :)
Service Reseau n'a peut etre pas les droits de modifier l'heure systeme. Si ca ne passe pas apres réinstall, tente en mettant un admin systeme pour demarrer le service(lui au moins on est sur qu'il a le droit au reseau et a l'heure) .
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005 24 nov. 2004 à 12:01
J'ai désinstallé et réinstallé mon service avec "Networkservice" comme compte dans ma classe installer mais sans résultat.
J'ai donc essayé avec un admin system pour voir si cela venait d'un problème de droits. Ca ne fonctionne toujours pas.
J'ai remarqué, en faisant des services, que pour la même chose, en mode application ou en mode service, la syntaxe changeait. Je ne sais pas si le problème pourait venir de la. Je ne fais qu'émettre une hypothèse.
Car ca ne semble pas venir d'un problème d'autorisations.
Je dois te saouler avec toutes mes questions.
Merci tout de même pour tes précieuses réponses.
Par contre si tu pense à autre chose, n'hesites pas.
Ricks27
PS : Y aurait il possibilité que l'on fasse des transferts de connaissance, en ce qui concerne la programmmation, sur un logiciel de messagerie instantanée comme msn ou autre??
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 24 nov. 2004 à 12:39
En fait Path.GetDirectoryName([Assembly].GetExecutingAssembly().Location) fonctionne a tous les coups et c celui que j'utilise :)
Sinon l'autre difference est due au fait que dans le mode Appli tu utiliser un composant Winforms Timer et dans l'autre Cas un composant plus général. Il est a noté que le timer qui tourne avec les service fonctionne aussi tres bien s'il est placé sur une Form.
Mais en effet de maniere general tous les composant specifique Winforms ne fonctionne pas avec un service (comme il ne fonctionne pas sur une page Web)
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005 24 nov. 2004 à 12:47
Et sinon pour mon problème, tu ne pense pas que ca pourait venir d'un problème de syntaxe plutôt que de droits.
Car j'ai tracé le service et ca bloque juste sur cette ligne. Je n'ai aucune erreur retournée.
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 24 nov. 2004 à 14:34
Hum non je ne pense pas, mais trace l'exception qui est generée (Type + Message), ca nous en dira peut etre plus sur la cause (et la solution) de ton probleme :)
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005 24 nov. 2004 à 15:07
C'est ce que j'ai fait. Mais je n'ai aucune exception générée.
Voici le code ou ca pose problème :
-------------------------------------------
Sub Synchronisation()
Try
Dim sRet As String = System.Text.Encoding.Default.GetString(New Net.WebClient().DownloadData("http://www.horlogeparlante.com"))
Dim Balisedébut As String, BaliseFin As String, MyTime As String
Dim LenBaliseDébut As Long, LenBaliseFin As Long, TailleDateHeure As Long, i As Long, n As Long
Dim nTime As Date, nDte As Date
i = InStr(1, sRet, BaliseFin) - LenBaliseFin
If i > 0 Then
sRet = Mid(sRet, 1, i)
n = InStrRev(sRet, Balisedébut) + LenBaliseDébut
If n > 0 Then
MyTime = Mid(sRet, n, i)
MyTime = Mid(Trim(MyTime), InStr(1, MyTime, " ") + 1, TailleDateHeure)
Ricks27
Messages postés79Date d'inscriptionmardi 4 juin 2002StatutMembreDernière intervention29 juillet 2005 24 nov. 2004 à 16:40
Disons ke je peux attendre d heures sans k'il ne se passe rien.
Je passe effectivement par un proxy pour avoir accès o net.
Tu as peux être raison pour le DownloadData qui peut être blocant en cas d'erreur. J'ai déja entendu parlé de WebRequest , je vais essayé.
Peut être que le DownloadData n'est pas adapté pour les services.
En ce qui concerne Alias666 ne t'en fais pas, c mon stagiaire. En fait. Il é chiant mais c un brave gas.