Impossible d'utiliser Server.MapPath

111

Que dois-je faire pour Server.MapPathtravailler?
j'aiusing System.Web;

quoi d'autre? Lorsque je tape, Serveril n'y a pas d'option de résultat rapide (intelli-sense) pour Server.

De l'aide?

a1204773
la source
1
Vous devez fournir plus d'informations. De quel genre de projet s'agit-il? Pourquoi souhaitez-vous exécuter Server.MapPath? S'agit-il d'un projet de formulaires Web et écrivez-vous du code dans une sous-classe de page ou dans la fonction de rendu d'un ASPX?
Dai
C # Winforms .. je veux qu'il vérifie la disponibilité des fichiers sur le serveur
a1204773

Réponses:

286

vous pouvez essayer d'utiliser ceci

    System.Web.HttpContext.Current.Server.MapPath(path);

Ou utiliser HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
la source
1
Ils ne fonctionnent pas .... Erreur 1 Le type ou le nom d'espace de noms 'HttpContext' n'existe pas dans l'espace de noms 'System.Web' (vous manquez une référence d'assembly?) ... Erreur 2 Le type ou le nom d'espace de noms 'Hosting' n'existe pas dans l'espace de noms 'System.Web'
a1204773
il semble que vous utilisez winforms, vous voudrez peut-être voir ce lien puis debugging.com/bug/18951
DotNetUser
4
Moi aussi, HostingEnvironment.MapPath a fonctionné et je l'utilise en dehors d'un contrôleur.
Luc
Tout d'abord, votre projet doit référencer System.Web.dll et cela fonctionnera
ihebiheb
Comment se faire lire un fichier présent dans ce répertoire "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Votre projet doit référencer l'assembly System.Web.dll. Le serveur est un objet de type HttpServerUtility. Exemple:

HttpContext.Current.Server.MapPath(path);
Leandro Gomide
la source
3
Je ne trouve pas une telle référence, je n'ai trouvé que ces deux: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") donne null si nous l'appelons à partir d'un thread.

Alors, essayez d'utiliser

System.Web.Hosting.HostingEnvironment.MapPath("~/")

Ravindra Singh Chhabra
la source
1

Tout d'abord, ajoutez une référence à System.web, si vous ne l'avez pas. Faites cela dans le dossier Références .

Vous pouvez ensuite utiliser Hosting.HostingEnvironment.MapPath(path);

jdisla
la source
1
bool IsExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("/UploadedFiles/"));
if (!IsExist)
    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/UploadedFiles/"));

StreamWriter textWriter = File.CreateText(Path.Combine(HttpContext.Current.Server.MapPath("/UploadedFiles/") + "FileName.csv"));
var csvWriter = new CsvWriter(textWriter, System.Globalization.CultureInfo.CurrentCulture);
csvWriter.WriteRecords(classVM);
user13048334
la source
Les réponses basées uniquement sur le code sont considérées comme de mauvaise qualité: assurez-vous de fournir une explication de ce que fait votre code et de la manière dont il résout le problème. Cela aidera le demandeur et les futurs lecteurs si vous pouvez ajouter plus d'informations dans votre message. Voir Expliquer les réponses entièrement basées sur le code
Calos
0

Essayez d'ajouter System.Webcomme référence à votre projet.

jabu.hlong
la source
0

Je sais que cet article date de quelques années, mais ce que je fais est d'ajouter cette ligne en haut de votre classe et vous pourrez toujours utiliser Server.MapPath

Dim Server = HttpContext.Current.Server

ou tu peux faire une fonction

Public Function MapPath(sPath as String)
    return HttpContext.Current.Server.MapPath(sPath)
End Function

Je veux simplifier les choses. Je l'ai également ajouté à ma classe Utilitaires juste au cas où je le rencontrerais à nouveau.

Guy Cothal
la source