2010-09-09 4 views
1

J'utilise asp.net 3.5. Et je suis sérialisation un objet dans le serveur, je loue un hébergement et je veux modifier quelque chose d'une manière Dinamic avec XML,Je ne peux pas enregistrer un fichier à la racine du serveur

Ceci est mon code:

Stream writer = new FileStream(Environment.CurrentDirectory + @"\public_html\" + nombrearchivo.Text, FileMode.Create); 

serializer.Serialize(writer, p); 

Ceci est mon message d'erreur:

Détails de l'exception: System.UnauthorizedAccessException: l'accès au chemin 'C: \ Windows \ SysWOW64 \ inetsrv \ dasd.xml' est refusé.

Merci!

Répondre

0

La réponse est dans le message d'erreur: « accès refusé »

Vous ne disposez pas des autorisations d'écriture sur ce dossier, ce qui est parfaitement logique; vous ne devrait pas avoir des droits d'écriture sur ce dossier, au moins vous probablement ne devrait pas.

Si vous avez besoin de mettre en mémoire cache quelque chose pour une utilisation ultérieure, utilisez la session pour le stockage temporaire ou demandez à votre hébergeur d'obtenir l'autorisation d'écriture pour le stockage à long terme.

+1

Mais il n'écrit pas * dans ce dossier (au moins compte tenu du code qu'il nous a donné). –

+0

@Kirk Woll 'serializer.Serialize (écrivain, p);'? –

+0

Mais le chemin de cet auteur contient "\ public_html \", non? Et l'erreur dans l'exception n'inclut pas ce dossier. –

0

Environment.CurrentDirectory est une propriété par processus qui n'est probablement pas le répertoire souhaité; dans ce cas, il s'agit du répertoire dans lequel le processus de travail IIS est lancé. Dans tous les cas, pour l'hébergement ASP.Net standard (par opposition à l'hébergement de serveur physique ou virtuel), vous serez limité par la stratégie de sécurité d'accès au code ainsi que par les droits du compte IUSR exécuté par le processus de travail IIS. ; Généralement, cela signifie des privilèges très minimes afin de tenter de limiter les dommages d'un script de page Web compromise ou malveillante, généralement beaucoup moins que les privilèges de votre connexion de téléchargement d'application. En bref, vous devrez vous procurer un répertoire inscriptible par l'application (et probablement un support ASP.Net plus grand que moyen) si vous souhaitez enregistrer des fichiers.

0

je découvre que le problème était le chemin ...

"\ hmfsw \ web \ DTCWIN107 \ MYSITE.com \ public_html \"

a bien fonctionné! Après avoir demandé au fournisseur d'hébergement 8 fois ils pourraient me dire le bon

Merci beaucoup!

Questions connexes