Ngoại lệ: "Định dạng URI không được hỗ trợ"


89

Tôi có một đường dẫn cục bộ tuyệt đối trỏ đến một dir: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Nhưng khi tôi cố gắng ném nó vào DirectoryInfoctor của tôi, tôi nhận được ngoại lệ "Định dạng URI không được hỗ trợ".

Tôi đã tìm kiếm trên Google và tìm SO, nhưng tôi chỉ thấy các giải pháp có đường dẫn từ xa, không phải đường dẫn cục bộ. Tôi mong đợi một phương pháp chuyển đổi thuộc một số loại ...

Câu trả lời:


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

3
Đẹp! Tôi đã gặp vấn đề chính xác này và Google đã chạy như điên, điều này hoạt động tốt.
— Jeremy Morgan,

Mặc dù nó là một giải pháp hoạt động của c, nhưng có một trường hợp mà nó không thành công. Nếu vị trí chứa dấu # thì đường dẫn cục bộ sẽ chỉ đi đến vị trí đó. Ví dụ: nếu đường dẫn của bạn là tệp: /// C: /foo/bar#/test.jpg thì bạn sẽ nhận được C: / foo / bar thay vì những gì bạn thực sự muốn.
— DokutoMekki

2
Chào. Tôi muốn tệp có mặt tại www.xxx.com/sitemap.xml. Điều này đang hoạt động tại localhost, nhưng trên máy chủ không có thư mục như vậy. Làm thế nào mọi thứ có thể được sắp xếp trong trường hợp đó?
— Đó là một cái bẫy

@ Itatrap Có lẽ bạn đang tìm Server.MapPath .
— Andrew Morton

nhưng sau khi sử dụng đường dẫn của bạn, tôi đang tạo thêm thư mục bên trong và nó không tạo thư mục. có cái nhìn stackoverflow.com/questions/63493899/…
— hud

1

Thử đi

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
Mặc dù mã này có thể giải quyết câu hỏi, bao gồm giải thích về cách thức và lý do tại sao điều này giải quyết vấn đề sẽ thực sự giúp cải thiện chất lượng bài đăng của bạn và có thể dẫn đến nhiều phiếu bầu hơn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những giới hạn và giả định áp dụng.
— Artog 10/09/19
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.