IIS6 agregando espacio al final de la ruta del archivo

        string filePath = Properties.Settings.Default.audioFilePath.ToString() + " ";
        filePath = filePath.Replace(" ", "");           // iis6 on 2003 server seems to add a space to the end of the path
        string audioFilename = filePath + filename;
        return File(audioFilename, "audio/wav");

esto me desconcierta mucho. En mi máquina de desarrollo, esto funciona bien y la ruta es correcta. En el sitio de producción, mi IIS6 agrega un espacio a la variable filePath. Agregué la línea para reemplazar los espacios con "" e incluso agregué la cadena adicional en mi máquina local para asegurarme de que estaba funcionando.

Puse una vista de prueba en su lugar para pasar la ruta, en IIS6 obtengo:

c: \ mensajes \ buzón de voz \ archivado \

Observe el espacio en blanco entre \ archivado \ y <(agregué <para poder ver el espacio)

En mi máquina de desarrollo obtengo

c: \ __ dev \ _proj \ msg \ messages \

Estoy intercambiando la ruta en el archivo web.config pero no hay espacios, y de todos modos estoy eliminando espacios, pero en algún lugar cuando se sirve al navegador parece que IIS6 agrega el espacio También probé diferentes navegadores, IE y Firefox, ambos con el mismo resultado, por lo que apunta a IIS ????

Respuesta: recortar fue, y la respuesta de que no era un espacio fue acertada. Fue LF. el código fijo:

            string filePath = Properties.Settings.Default.audioFilePath;
        filePath = filePath.TrimEnd();           // iis6 on 2003 server seems to add a space to the end of the path
        string audioFilename = filePath + filename;

preguntado el 08 de enero de 11 a las 21:01

1 Respuestas

El problema suena muy inusual. Pero como una solución alternativa, en lugar de usar Replace Deberías usar Trim. Y en lugar de filePath + fileName, Trate de System.IO.Path.Combine(filePath, fileName). No sé si esto suprimirá los síntomas o no, pero podría valer la pena intentarlo.

Respondido el 09 de enero de 11 a las 01:01

Eso es lo que pensé. Intenté eso y parece señalar dónde está el problema, ahora obtengo: Detalles de la excepción: System.ArgumentException: Caracteres ilegales en la ruta. Entonces, esto se origina en el código del controlador antes de la vista, creo, así que sí, muy extraño. - Vince Bray

Parece que el carácter adicional no es un espacio. ¿Ha intentado averiguar cuál es el código ASCII de cada carácter en audioFilePath? Una vez que descubra cuál es el carácter malo, puede eliminarlo explícitamente. O puede adoptar un enfoque más amplio de recorrer los personajes y mantener solo los caracteres permitidos. - Bradford Hoagland

> c: \ mensajes \ correo de voz \ archivado \ <10 <<< ese es el código de caracteres, LF lo es, pero si era bueno siguiendo las instrucciones e intenté recortar antes, esa era la solución. Entonces, el recorte quita LF que se agregó desde el applicationSetting, supongo. - Vince Bray

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