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?


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);

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);

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("~/")


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);


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);

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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.