2010-11-13 24 views
1

Je développe une application utilisant C# et asp. Il a besoin d'accéder à certains endroits du réseau local. Il y a une zone de texte dans le formulaire qui accepte le chemin d'accès à partir de l'utilisateur et le stockera dans une variable de type chaîne nommée location. La boucle if renvoie toujours la valeur false si l'application s'exécute dans Windows 7. et ne se produit que lorsque je cours à partir de l'application installée, sinon elle retournera vrai si le chemin est vrai. Voici le code:Comportement étrange de System.IO.DirectoryInfo. Existe la fonction

L'entrée est comme zone de texte BackupLocation cette

\\192.168.0.33\Others (F) 

. Cela fonctionne très bien si l'application est hébergée sur un système qui a Windows XP

System.IO.DirectoryInfo locationInfo = new System.IO.DirectoryInfo(BackupLocationTxt.Text); 
     if (locationInfo.Exists) // always return false if the application run in windows 7 
     { 

     } 

Pourquoi cela se produit?

+0

Comment créez-vous la chaîne 'location'? Lorsque vous utilisez ASP, vous devez utiliser 'Server.MapPath (string)' pour obtenir l'emplacement * effective * sur le disque au lieu d'un par rapport au chemin de votre application Web. Cela peut-il être le problème? – Patrick

+0

S'il vous plaît regarder la question éditée –

Répondre

1

Cela se produit car l'utilisateur sous lequel vous exécutez votre application n'a pas l'autorisation de lire ces dossiers. Vous devrez peut-être accorder l'accès en lecture à ces dossiers au compte sur lequel vous exécutez votre site.

+0

Son travail bien dans Windows XP .Comment puis-je donner la permission si l'application s'exécute dans Windows 7.et le dossier ont des droits de lecture et d'écriture sur TOUS –

+0

Où est cette application hébergée? IIS, Cassini, ...? –

+0

les applications sont hébergées dans IIS –

1

Essayez plutôt System.IO.Directory.Exists(string path).

+1

Est-ce une suggestion ou une solution? Comment cela pourrait-il aider? –

+0

C'était en quelque sorte une solution à mon cas. DirectoryInfo.Exists renvoyait toujours false, lorsque Directory.Exists (DirectoryInfo.FullName) renvoyait toujours true. Mais je ne comprends toujours pas pourquoi l'un fonctionne sur l'autre?! – cmxl

0

Votre application ASP.NET n'a pas d'autorisations sur le dossier sur un autre ordinateur du réseau local. Essayez le service Windows démarré sous le compte LocalService.