Server.MapPath ne fonctionne pas
-
02-10-2019 - |
Question
Je suis en train de fichiers d'accès dans un I répertoire virtuel créé dans IIS pour la première fois, mais je suis d'obtenir des résultats étranges.
OS: Windows XP Pro
IIS: 5.1
Plate-forme de développement: Visual Studio 2008
Langue: C #
Répertoire virtuel Nom: portail
Chemin local: C: \ digital_communications_report_portal
Par défaut Site Chemin local: c: \ inetpub \ wwwroot
Je peux télécharger le fichier http: //localhost/portal/testFile.xlsx sans problème.
J'essaie l'un de ces
string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));
et obtenir "C: \ Documents and Settings \ jjohnson \ Mes documents \ Visual Studio 2008 \ SitesWeb \ ClientSite \ localhost \ portal \ testFile.xlsx" qui est mon chemin du projet avec le chemin virtuel giflé sur la fin et n'est pas un chemin valide. J'essaie de prendre le tilde ou localhost et je suis un « Impossible de mapper le chemin « /portal/testFile.xlsx ». » exception.
Toutes les idées ce que je fais mal?
La solution
Si je ne me trompe pas, Server.MapPath(ResolveUrl("~/relative/path/to/file"))
est pas ce que vous voulez. Il produira un /rooted/path/to/file
qui, lorsqu'il est passé à Server.MapPath()
ne donnera pas un emplacement valide.
Au lieu d'utiliser simplement Server.MapPath("~/relative/path/to/file");
Mise à jour
Le problème que vous rencontrez est dû au fait que vous incluez le nom du répertoire virtuel ( « portail ») dans votre URL relative. Votre URL relative n'a pas besoin de spécifier le nom de répertoire virtuel, tout le chemin vers le fichier désiré par rapport à la racine de l'application.