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

Respuestas:


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

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();


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
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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.