Exception: "Les formats URI ne sont pas pris en charge"

89

J'ai un chemin local absolu pointant vers un dir: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Mais quand j'essaye de le lancer dans DirectoryInfole ctor de, j'obtiens l'exception "Les formats URI ne sont pas supportés".

J'ai cherché sur Google et regardé 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 ...

Howie
la source

Réponses:

189
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;
Marc Gravell
la source
3
Agréable! J'ai eu exactement le même problème et Google comme un fou, cela a très bien fonctionné.
Jeremy Morgan
Bien que ce soit une solution qui fonctionne ofc, il n'y a qu'un cas où elle échoue. Si l'emplacement contient un #, le chemin local ira uniquement jusqu'à cette position. Par exemple, si votre chemin est file: /// C: /foo/bar#/test.jpg alors vous obtiendrez C: / foo / bar au lieu de ce que vous voulez réellement.
DokutoMekki
2
Salut. Je souhaite que le fichier soit présent sur www.xxx.com/sitemap.xml. Cette chose fonctionne chez localhost, mais sur le serveur, il n'y a pas de tel répertoire. Comment les choses peuvent-elles être triées dans ce cas?
C'est un piège
@ It'satrap Vous recherchez peut-être Server.MapPath .
Andrew Morton le
mais après avoir utilisé votre chemin, je crée plus de dossier à l'intérieur et ne crée pas le répertoire. regardez stackoverflow.com/questions/63493899/…
hud
1

Essaye ça

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

J'ai résolu la même erreur avec Path.Combine (MapPath ()) pour obtenir le chemin du fichier physique au lieu de celui http: /// www.

Robert Peter Bronstein
la source
0
     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 { }
Badr Bouaichi
la source
1
Bien que ce code puisse résoudre la question, inclure une explication sur comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre publication et entraînerait probablement plus de votes à la hausse. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limites et des hypothèses applicables.
Artog