Excepción: "Los formatos URI no son compatibles"

89

Tengo una ruta local absoluta que apunta a un directorio: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

Pero cuando trato de lanzarlo en DirectoryInfo's ctor, obtengo la excepción "Los formatos URI no son compatibles".

Busqué en Google y miré SO, pero solo veo soluciones con rutas remotas, no locales. Esperaría un método de conversión de algún tipo ...

Howie
fuente

Respuestas:

189
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;
Marc Gravell
fuente
3
¡Agradable! Tuve exactamente el mismo problema y busqué en Google como loco, esto funcionó muy bien.
Jeremy Morgan
Si bien es una solución que funciona de c, solo hay un caso en el que falla. Si la ubicación contiene un #, la ruta local solo irá hasta esa posición. Por ejemplo, si su ruta es file: /// C: /foo/bar#/test.jpg, obtendrá C: / foo / bar en lugar de lo que realmente desea.
DokutoMekki
2
Hola. Quiero que el archivo esté presente en www.xxx.com/sitemap.xml. Esto funciona en localhost, pero en el servidor no existe tal directorio. ¿Cómo se pueden arreglar las cosas en ese caso?
Es una trampa el
@ It'satrap Quizás esté buscando Server.MapPath .
Andrew Morton
pero después de usar su ruta, estoy creando más carpeta dentro y no está creando el directorio. echar un vistazo a stackoverflow.com/questions/63493899/…
hud
1

Prueba esto

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

Resolví el mismo error con Path.Combine (MapPath ()) para obtener la ruta del archivo físico en lugar de http: /// www.

Robert Peter Bronstein
fuente
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
fuente
1
Si bien este código puede resolver la pregunta, incluir una explicación de cómo y por qué esto resuelve el problema realmente ayudaría a mejorar la calidad de su publicación y probablemente resultaría en más votos a favor. Recuerde que está respondiendo la pregunta a los lectores en el futuro, no solo a la persona que pregunta ahora. Por favor, editar su respuesta para agregar explicaciones y dar una indicación de lo que se aplican limitaciones y supuestos.
Artog