Pengecualian: "Format URI tidak didukung"


89

Saya memiliki jalur lokal absolut yang mengarah ke dir: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Tetapi ketika saya mencoba untuk memasukkannya ke DirectoryInfodalam ctor saya mendapatkan pengecualian "format URI tidak didukung".

Saya mencari di Google dan melihat SO, tetapi saya hanya melihat solusi dengan jalur jarak jauh, bukan yang lokal. Saya mengharapkan metode konversi semacam ...

Jawaban:


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

3
Bagus! Saya memiliki masalah yang sama persis dan mencari Google seperti orang gila, ini bekerja dengan baik.
Jeremy Morgan

Meskipun ini adalah solusi yang berhasil dari c, hanya ada satu kasus yang gagal. Jika lokasi berisi # maka jalur lokal hanya akan sampai ke posisi itu. Misalnya jika path Anda adalah file: /// C: /foo/bar#/test.jpg maka Anda akan mendapatkan C: / foo / bar, bukan yang Anda inginkan.
DokutoMekki

2
Hai. Saya ingin file tersebut ada di www.xxx.com/sitemap.xml. Ini berfungsi di localhost, tetapi di server tidak ada direktori seperti itu. Bagaimana hal-hal dapat diurutkan dalam kasus itu?
Ini jebakan

@ It'satrap Mungkin Anda sedang mencari Server.MapPath .
Andrew Morton

tetapi setelah menggunakan jalur Anda, saya membuat lebih banyak folder di dalamnya dan itu tidak membuat direktori. lihat stackoverflow.com/questions/63493899/…
hud

1

Coba ini

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


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 { }

1
Meskipun kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan tentang bagaimana dan mengapa ini menyelesaikan masalah akan sangat membantu meningkatkan kualitas posting Anda, dan mungkin menghasilkan lebih banyak suara. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang. Harap edit jawaban Anda untuk menambahkan penjelasan dan memberikan indikasi batasan dan asumsi apa yang berlaku.
Artog
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.