90 votes

Exception : "Les formats URI ne sont pas supportés"

J'ai un chemin local absolu qui pointe vers un répertoire : "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Mais quand j'essaie de le lancer dans DirectoryInfo J'obtiens l'exception "URI formats are not supported".

J'ai cherché sur Google et sur SO, mais je ne vois que des solutions avec des chemins distants, pas des chemins locaux. Je m'attendrais à une méthode de conversion quelconque...

191voto

Marc Gravell Points 482669
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;

3 votes

Joli ! J'ai eu exactement le même problème et j'ai cherché sur Google comme un fou, ceci a bien fonctionné.

0 votes

Bien que cette solution fonctionne, il n'y a qu'un seul cas où elle échoue. Si l'emplacement contient un #, le chemin local n'ira que jusqu'à cette position. Par exemple, si votre chemin est file:///C:/foo/bar#/test.jpg, vous obtiendrez C:/foo/bar au lieu de ce que vous voulez réellement.

2 votes

Bonjour, je veux que le fichier soit présent sur www.xxx.com/sitemap.xml. Cette chose fonctionne sur localhost, mais sur le serveur il n'y a pas de tel répertoire. Comment régler les choses dans ce cas ?

1voto

Hardeep Singh Points 420

Essayez ceci

ImagePath = "http://localhost/profilepics/abc.png";
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream receiveStream = response.GetResponseStream();

0voto

J'ai résolu la même erreur avec la méthode Path.Combine(MapPath()) pour obtenir le chemin d'accès physique du fichier au lieu de l'adresse IP. http:/// www un.

0voto

Badr Bouaichi Points 1
     string ImagePath = "";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
        string a = "";
        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            Stream receiveStream = response.GetResponseStream();
            if (receiveStream.CanRead)
            { a = "OK"; }
        }

        catch { }

1 votes

Bien que ce code puisse résoudre la question, y compris une explication L'explication de la manière et de la raison pour laquelle cette solution résout le problème contribuerait vraiment à améliorer la qualité de votre message, et entraînerait probablement un plus grand nombre de votes positifs. N'oubliez pas que vous répondez à la question pour les lecteurs à venir, et pas seulement pour la personne qui pose la question maintenant. Veuillez consulter le site modifier votre réponse pour ajouter des explications et donner une indication des limites et des hypothèses applicables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X