Pourquoi suis-je un “impossible de trouver une partie du chemin” exception?
Je suis en train d'élaborer un site web en utilisant Visual Studio 2010
. Je suis en train d'enregistrer un fichier dans un chemin. Il fonctionne très bien localhost.
Mais le même code ne fonctionne pas dans IIS. Il affiche l'erreur suivante
Détails De L'Exception: System.IO.DirectoryNotFoundException: ne Peut pas
de trouver une partie du chemin "C:\Inetpub\wwwroot\Vendor\cn.jpg'.Impossible de trouver une partie du chemin "C:\Users\shashank\Desktop\ab.csv'.
Voici le code:
protected void btnImportFile_Click(object sender, EventArgs e)
{
sArReportText = File.ReadAllText(txtFilePath.Text.Trim());
//Set the report Properties to insert Report information
SetProperties();
}
l'erreur est assez clair, le répertoire ou le chemin d'accès n'existe pas.
Vérifiez si 'C:\Inetpub\wwwroot\Vendor\cn.jpg' répertoire est dans votre machine.
Est-ce que votre application identité du pool d'avoir les autorisations sur ce dossier?
Le chemin est existe pas sur mon Système, j'ai héberger l'application sur le serveur et y accéder à partir de là
Parce qu'il recherche dans le serveur n'est pas à votre système.
Vérifiez si 'C:\Inetpub\wwwroot\Vendor\cn.jpg' répertoire est dans votre machine.
Est-ce que votre application identité du pool d'avoir les autorisations sur ce dossier?
Le chemin est existe pas sur mon Système, j'ai héberger l'application sur le serveur et y accéder à partir de là
Parce qu'il recherche dans le serveur n'est pas à votre système.
OriginalL'auteur Shashank | 2013-09-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également être confronté à ce que je suis: que le nom du répertoire contient des caractères inhabituels. Dans mon cas,
Que le droit d'auteur signe est la question.
Donc à l'aide de concepts tirés de l' L'obtention de la court 8.3 nom de fichier à partir d'un nom de fichier long, je convertis mes chemins à court formulaire d'abord, puis l'utiliser pour obtenir ma liste de fichiers.
...
OriginalL'auteur bugmagnet
Ce peut-être parce que, vous n'êtes pas avoir le fichier spécifié dans le serveur web, ou vous avez peut-être utilisé un chemin d'accès incorrect. Spécifiez l'emplacement exact et le nom de fichier de la manière dont elle est stockée dans le serveur web. utilisation
HttpContext.Current.Request.ApplicationPath
ouServer.MapPath
pour spécifier l'emplacement où le fichier désiré se trouve. Et aussi assurez-vous de disposer des droits de lecture et d'écriture pour ce fichier spécifique et son dossier.OriginalL'auteur Robin Joseph
Vous devez avoir les autorisations définies dans iis pour que les fichiers soient enregistrés dans le dossier. Fondamentalement, votre téléchargement de fichiers doivent être sauvegardés dans un dossier séparé présent à l'intérieur de votre répertoire racine.
OriginalL'auteur Bibhu
Afin d'accéder, de créer et de supprimer des fichiers sur le serveur, il faut avoir des droits.
Comme dans mon projet, je suis à l'aide Imitateur de la classe pour accéder aux différents fichiers et de dossiers à partir du serveur.
Sinon, il va lever une exception.
OriginalL'auteur JulyOrdinary
Vous pouvez utiliser du code usurpation d'identité:
http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html
http://www.codeproject.com/Articles/14358/User-Impersonation-in-NET
quel que soit, qui que vous utilisez, comme l'usurpation d'identité doit être capable de lire/écrire dans l'emplacement qui est en train d'être enregistré. Nous utilisons cette méthode dans les applications pour supprimer/créer des dossiers sur le réseau. Même si App_Data est la meilleure pratique, il peut être une exigence pour accéder aux documents en dehors de ce dossier.
Vous pouvez également définir l'usurpation d'identité sur IIS.
Je remarque aussi que votre fonction est appelée btnImportFile. Vous pouvez regarder en contrôle FileUpload si vous téléchargez un fichier, ce qui vous permet d'obtenir le tableau d'octets du fichier et l'enregistrer en tant que de besoin. https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload%28v=vs.110%29.aspx. Vous pourriez encore besoin d'utiliser de Serveur.MapPath ou HttpContext.Actuel.Demande.ApplicationPath en fonction de vos besoins.
OriginalL'auteur jmcclure
Envisager la façon dont vous êtes le lancement de VS trop. Contre-intuitivement, je rencontre ce problème que lorsque je suis en cours d'exécution VS en mode Administrateur. Éventuellement un groupe de politiques de chose.
OriginalL'auteur Ben Power
Il est généralement préférable d'utiliser le
App_Data
dossier pour enregistrer les fichiers.Prendre un coup d'oeil ici, Travailler avec des fichiers, pour un tutoriel.
Comment est-ce même liée à la question?
OriginalL'auteur christiandev