2017-03-14 5 views
0

J'essaie d'utiliser System.Web; pour lire et écrire dans un document texte situé sur le serveur à partir d'une application de bureau winform. Tout d'abord besoin de vérifier si le fichier existe. Je ne sais pas pourquoi, mais System.Web ne fonctionne pas, il est ajouté pour les références que System.WebVérifiez si le fichier existe sur le serveur pour lire et écrire

string siteDir = "http://www.site.info/doc.txt"; 

if (File.Exists(Server.MapPath(siteDir))); 

même avec System.Web.HttpContext

System.Web.HttpContext.Current.Server.MapPath(siteDir); 
+0

Essayez 'System.Web.Hosting.HostingEnvironment.MapPath (siteDir);' –

+0

S'agit-il d'une application de bureau ou d'une application Web? Vous avez mis une balise winforms là-dedans, ce qui suggère qu'il s'agit d'une application de bureau – Sparrow

+0

Vous devez faire référence à l'assembly 'System.Web.dll'. –

Répondre

1

Une façon simple de le faire est d'utiliser WebClient.DownloadFile() pour tenter de télécharger un fichier à partir d'une URL comme celle que vous utilisez. Si une exception WebException est levée et que l'erreur HTTP est 404 Fichier introuvable, le fichier n'existe pas sur le serveur (ou vous n'y avez pas accès).

Voir: How to catch 404 WebException for WebClient.DownloadFileAsync pour plus d'informations sur la détection d'une erreur 404.

Malheureusement, il n'existe aucune méthode WebClient qui vérifie simplement si un fichier est présent sur le serveur.

+0

Bonjour, merci, donc je l'ai fait de cette façon HttpWebResponse resp = ex.Response comme HttpWebResponse; if (resp.StatusCode == HttpStatusCode.NotFound) {// 404} – nikorio

-1
use System.IO.File.Exists() 

if(System.IO.File.Exists([path of file])) 
{ 
    // do something 
} 
+1

OP utilise déjà 'File.Exists' dans la question. –