İstisna: "URI biçimleri desteklenmez"


89

Bir dizine işaret eden mutlak bir yerel yolum var: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Ama onu DirectoryInfoctor'a atmaya çalıştığımda "URI formatları desteklenmiyor" istisnasını alıyorum.

Google'da araştırdım ve SO'ya baktım, ancak yalnızca uzak yollara sahip çözümler görüyorum, yerel olanlar değil. Bir çeşit dönüştürme yöntemi bekliyorum ...

Yanıtlar:


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

3
Güzel! Aynı sorunu yaşadım ve Google'da deli gibi araştırdım, bu harika çalıştı.
Jeremy Morgan

Bu, işe yarayan bir çözüm olsa da, başarısız olduğu tek bir durum vardır. Konum bir # içeriyorsa, yerel yol yalnızca bu konuma kadar gidecektir. Örneğin, yolunuz file: /// C: /foo/bar#/test.jpg ise, gerçekte istediğiniz yerine C: / foo / bar alırsınız.
DokutoMekki

2
Selam. Dosyanın www.xxx.com/sitemap.xml adresinde bulunmasını istiyorum. Bu şey localhost'ta çalışıyor, ancak sunucuda böyle bir dizin yok. Bu durumda işler nasıl sıralanabilir?
bir tuzak.

@ It'satrap Belki de Server.MapPath arıyorsunuz .
Andrew Morton

ama yolunuzu kullandıktan sonra, içinde daha fazla klasör oluşturuyorum ve dizini oluşturmuyorum. bir göz atın stackoverflow.com/questions/63493899/…
hud

1

Bunu dene

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
Bu kod soruyu çözebilirken, sorunun nasıl ve neden çözüldüğüne dair bir açıklama da dahil olmak üzere , gönderinizin kalitesini artırmaya gerçekten yardımcı olur ve muhtemelen daha fazla oy almanıza neden olur. Sadece şu anda soran kişi için değil, gelecekte okuyucular için soruyu yanıtladığınızı unutmayın. Açıklamalar eklemek ve hangi sınırlamaların ve varsayımların geçerli olduğuna dair bir gösterge vermek için lütfen yanıtınızı düzenleyin .
Artog
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.