W Server 2003 avec II6 : écrire sur le serveur et accès extérieur

cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005
- 9 sept. 2005 à 16:44
cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005
- 15 sept. 2005 à 10:48
Bonjour,

J'ai pas mal cherché mais je désespère. J'ai donc une appli ASPX sur un IIS6 installée sur un Windows Server 2003. Elle fait trois choses en particulier :
- écrire sur le serveur dans un fichier de log (.txt)
- lire dans un répertoire du serveur les noms des fichiers présents
- télécharger un fichier texte avec un composant Web File Field et lire le texte qui s'y trouve.
J'ai développé l'appli sur un XP (II5) et je n'avais pas de problèmes ; j'ai donné les droits nécessaires à l'utilisateur ASP (je ne l'ai pas testé avec une connexion distante ceci dit). Mais quand je l'ai déployé sur le serveur 2003, ce n'était pas l'utilisateur ASP mais le SERVICE RESEAU à qui il fallait donner les droits. Tout fonctionne en local, mais à distance je ne peux plus uploader les fichiers. Je peux lire dans un sous-répertoire du site et écrire si je me connecte à distance...

8 réponses

cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005

10 sept. 2005 à 22:59
J'ai trouvé la solution : avant j'uploadais le fichier et je le lisais ; en accès distant ça plantait. Je sauvegarde donc le fichier dans le répertoire du site, je le lis, pui sje le supprime et ça marche !!!
Si ça peut aider...

isadev
0
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005

12 sept. 2005 à 11:32
j'ai un problème assez proche du tien je pense, c'est un problème d'accès aux fichiers que je veux lire.
en local tout marche bien avec iis5
mais lorsque je passe sur serveur de test, iis6, l'accès aux fichiers qui ne sont pas sur le même serveur que l'application est refusé. Le gros soucis c'est que l'accès est refusé même en mettant tous les droits à tout le monde. Je ne peux donc pas utiliser ta méthode qui upload les fichiers dans le répertoire du site.
as-tu noté une autre différence entre iis5 et iis6 ?
0
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005

12 sept. 2005 à 17:30
apparemment, il faudrait cocher une option de IIS6 pour le forcer à travailler comme IIS5 mais pour moi ça marche toujours pas.
c'est un problème de chemin, tout ce qui sort du répertoire du site n'est pas trouvé. Même un lecteur réseau du serveur sur lui même : il ne trouve pas le fichier !
0
cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005

14 sept. 2005 à 12:13
Personnellement, je n'ai rien coché pour que le II6 marche comme un II5 (ce serait un peu dommage). J'ai seulement donné à l'utilisateur SERVICE RESEAU les droits sur le répertoire de mon site. Effectivement, je vais lire dans les fichiers du site. Je devais lire dans d'autres répertoires hors de wwwroots sur le serveur et il me disait que le chemin n'existait pas quand je faisais un test avec un if (Directory.exists). Je ne comprends pas encore tout à II6, j'y travaille...J'ai donc déplacé les autres sites dans le wwwroots en attendant mieux. Dans mon appli je dois à présent aller lire des fichiers sur un autre serveur, mais "[file://MonServeur/ \\MonServeur]" il ne comprend pas ; alors j'ai du travail encore...
Bon courage.

isadev
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005

14 sept. 2005 à 14:13
finalement t'as raison, pas besoin de cocher IIS5.
J'arrive à faire presque tout maintenant : je copie les fichiers comme toi dans le répertoire du site mais je n'arrive pas à les supprimer après utilisation.
Message d'erreur : cette ressource est utilisée par une autre personne ou un autre programme. Je suis la seule à le tester, et même en fermant l'application ça marche pas. Il faut attendre un peu, je sais pas combien de temps exactement mais après ça marche.
T'as une idée ?

Quand je voulais lire les fichiers sans les enregistrer dans le répertoire du site, je n'arrivais pas à lire ceux qui n'étaient pas sur le même serveur mais maintenant, aucun problème.
Je sais pas ce que tu utilises exactement, moi je prends un textfile et avec ça :
txfile_pgm.PostedFile.SaveAs(
[file://Monserveur/monfichier.txt \\Monserveur\monfichier.txt
]) aucun problème
.

Et même pas besoin de donner des droits particuliers à service réseau ou aspnet !
0
cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005

15 sept. 2005 à 09:08
Moi j'utilise un StreamReader et un StreamWriter. Il ne faut pas oublier de les fermer à la fin avec un .close, quand je faisais mes tests, parfois je ne pouvais pas les supprimer (à la main) car utilisé par une autre ressource. Alors je redémarrais et je l'ai supprimais. Le processus avait sûrement planté en route et le Stream n'avait pas été fermé peut-être, où alors il met un verrou dessus pour un ptit moment... (je n'en sais rien). Mais quand plus rien ne plantait, tout était ok, je pouvais les supprimer sans problèmes. Bon j'ai donné le contrôle total sur ce répertoire à SERVICE_RESEAU, mais pour toi il ne s'agit pas d'une question de droits apparemment.
quand tu dis
Quand je voulais lire les fichiers sans les enregistrer dans le répertoire du site, je n'arrivais pas à lire ceux qui n'étaient pas sur le même serveur mais maintenant, aucun problème.
Tu as donc réussi à lire des fichiers qui sont sur un autre serveur ou tu as réussi parce que tu les as mis dans le répertoire du site ?
En tout cas si quelqu'un a une idée pour lire des fichiers sur un autre serveur à partir d'une appli ASP.net, je suis preneuse ...

isadev
0
sev622
Messages postés
62
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
12 septembre 2005

15 sept. 2005 à 10:30
je pense que ce n'est pas un problème de droits car j'ai essayé beaucoup de choses(notamment contrôle total pour tout le monde) mais ça n'a pas abouti. Je pense plutôt que c'est un problème de chemin. (chemin relatif, chemin absolu, quelque chose de ce style)
j'ai réussi à lire les fichiers d'un autre serveur parce que au lieu de les lire directement où ils sont, j'en fais une copie temporaire dans le répertoire du site.
Mais maintenant j'ai un problème similaire, il faudrait que je puisse écrire sur le poste client ou un autre serveur et là je tourne en rond puisque j'ai exactement le même phénomène que pour la lecture directe ! j'ai essayé de refaire la même chose à l'envers : copier un fichier du répertoire du site vers le client mais là ça marche pas.
tu as exécuté une commande regiis.exe (je sais plus le nom exact) ? je crois que c'est pour que l'identité qui utilise le service d'états aspnet soir network service...donc pour iis6
0
cs_isadev
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2005

15 sept. 2005 à 10:48
J'ai trouvé ce qui suit (ça concerne parfois les services web, mais je pense que c'est aussi valable)

http://www.aspfr.com/forum.v2.aspx?id=89747


Le compte d'exécution du framework est un utilisateur local du serveur WEB : ASPNET
Celui-ci n'est pas connu sur le serveur de fichiers que tu souhaites lire.


Il faut faire exécuter le framework par un utilisateur du Domaine par exemple (ayant les droits suffisants sur les 2 serveurs) ou laisser accessible le répertoire que tu souhaites lire a tout le monde (un peu dangereux).


Quoi qu'il en soit evite les acces sur les shares system (c$, d$, ...) ce sont des share d'administration et non de lecture normale.


Crée un share directement sur ton répertoire ou se trouvent les fichiers et lis celui-ci avec le WS.



Il faut que tu modifies le fichier "machine.config" situé dans le répertoire d'installation du .NET frameword\Config. (Chez, c'est : C:\WINNT\Microsoft.NET\Framework\v1.1.4322\CONFIG)

isadev
0