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 ...

Howie
sumber

Jawaban:

189
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;
Marc Gravell
sumber
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();
Hardeep Singh
sumber
0

Saya memecahkan kesalahan yang sama dengan Path.Combine (MapPath ()) untuk mendapatkan jalur file fisik alih-alih http: /// www.

Robert Peter Bronstein
sumber
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
sumber
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