Exceção: “formatos URI não são suportados”


89

Tenho um caminho local absoluto apontando para um dir: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Mas quando tento jogá-lo no DirectoryInfoctor, recebo a exceção "formatos de URI não são suportados".

Pesquisei no Google e procurei SO, mas só vejo soluções com caminhos remotos, não locais. Eu esperaria um método de conversão de algum tipo ...

Respostas:


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

3
Agradável! Eu tive exatamente o mesmo problema e pesquisei como um louco, funcionou muito bem.
Jeremy Morgan

Embora seja uma solução que funciona muito bem, há apenas um caso em que ela falha. Se o local contiver um #, o caminho local seguirá apenas até essa posição. Por exemplo, se o seu caminho for arquivo: /// C: /foo/bar#/test.jpg então você obterá C: / foo / bar em vez do que você realmente deseja.
DokutoMekki

2
Oi. Quero que o arquivo esteja presente em www.xxx.com/sitemap.xml. Essa coisa está funcionando no localhost, mas no servidor não existe tal diretório. Como as coisas podem ser classificadas nesse caso?
É uma armadilha

@Isatrap Talvez você esteja procurando por Server.MapPath .
Andrew Morton

mas depois de usar seu caminho, estou criando mais pasta dentro e não está criando o diretório. dê uma olhada stackoverflow.com/questions/63493899/…
hud

1

Tente isto

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
Embora este código possa resolver a questão, incluir uma explicação de como e por que isso resolve o problema realmente ajudaria a melhorar a qualidade da sua postagem e provavelmente resultaria em mais votos positivos. Lembre-se de que você está respondendo às perguntas dos leitores no futuro, não apenas da pessoa que está perguntando agora. Por favor edite sua resposta para adicionar explicações e dar uma indicação do que limitações e premissas se aplicam.
Artog de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.