El formato de la ruta dada no es compatible

Estoy tratando de descargar una hoja de Excel y estoy generando dinámicamente su nombre de archivo, que debe tener el siguiente formato:

p.ej:

User_Wise_List_Of_Documents_2013_On_16_04_2013

Para esto escribí el siguiente código:

cadena fechaActual = FechaHora.Ahora.Fecha.ToString();

string currentYear=DateTime.Now.Year.ToString();

nombre de archivo = Server.MapPath("~/Usuario/Documentos/") + "User_Wise_List_Of_Documents_" + currentYear + "on" + fecha actual + ".xls";

De alguna manera, me está dando la siguiente excepción:

The given path's format is not supported.

Cualquier ayuda será apreciada.

preguntado el 16 de abril de 13 a las 08:04

2 Respuestas

Creo que su nombre de archivo contiene caracteres no válidos como : Porque estás formando un nombre de archivo con string currentDate = DateTime.Now.Date.ToString().

Ver la lista de caracteres no válidos

var invalidChars = Path.GetInvalidFileNameChars();

EDITAR

Puede usar esto para reemplazar caracteres no válidos

string newdatestr = String.Join("",currentDate.Select(c => invalidChars.Contains(c) ? '_' : c));

Respondido 16 Abr '13, 08:04

@ankitaalung Simplemente reemplace los caracteres no válidos con otro carácter válido como _. Actualicé la respuesta. - I4V

No funcionó para mí :( ¿Está bien el código de abajo? string currentDate = DateTime.Now.Date.ToString(); string currentYear=DateTime.Now.Year.ToString(); filename = Server.MapPath("~/User/Documents /") + "User_Wise_List_Of_Documents_" + añoActual + "on" + currentDate + ".xls"; var invalidChars = Path.GetInvalidFileNameChars(); string newdatestr = String.Join("", currentDate.Select(c => invalidChars.Contains(c) ? '_' : c)); - ankita alung

@ankitaalung No funciona porque reemplaza caracteres no válidos después de ha formado su nombre de archivo. usar newdatestr en lugar de currentDate mientras creaba el filename - I4V

¿Has comprobado el resultado de Server.MapPath("~/User/Documents/")?

Devolverá la ruta del directorio de la carpeta de su sitio web. "/User/Documents/", que sería por ejemplo "C:\wwwroot\User\Documents\". No puede descargar un archivo desde allí (a menos que esté alojando localmente, en cuyo caso podría funcionar, pero solo para usted).

Probablemente estés buscando el Page.ResolveUrl() función, que creará un uri web relativo a su sitio web, en lugar de al sistema de archivos.

Respondido 16 Abr '13, 08:04

Sí. De hecho, he estado guardando mis archivos desde hace bastante tiempo hasta el momento en que decidí agregar el año y la fecha actuales en el nombre del archivo. - ankita alung

No. No lo estoy creando fuera de mi proyecto. Es una carpeta creada por mí en el propio proyecto. - ankita alung

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.