2011-05-31 7 views
15

necesito a URL codificar algunos períodos ya que tengo que pasar un poco de trayectoria a lo largo del documento y es como estaUrl Encode Períodos?

http://example.com/test.aspx?document=test.docx 

Así test.docx me está causando un error de carácter ilegal. Así que tengo que cambiarlo a

. --> %2E 

He intentado utilizar Server.URLEncode

string b = Server.UrlEncode("http://example.com/test.aspx?document=test.docx"); 

pero consigo

"http%3a%2f%2fexample.com%2ftest.aspx%3fdocument%3dtest.docx" 

así que tengo que usar como una cadena de reemplazo y hacer de forma manual y reemplazar todos los períodos con ese código?

+1

¿Estás seguro de que es el '.'? Parece una cadena de consulta perfectamente válida para mí. –

Respuesta

13

El período no es el problema (dado que% 2E no resuelve el problema). Un período es un carácter de URL perfectamente válido sea cual sea el problema, no es el período. Compruebe el rastro de la pila del error que se está lanzando o publique los detalles completos del error.

Y no debe ser la URL que codifica la ruta completa. Solo el parámetro de cadena de consulta valor.

string b = "http://example.com/test.aspx?document=" + Server.UrlEncode("test.docx"); 

¿Sigues recibiendo el error si lo intentas de esa manera?

No tocaría SharePoint con un poste de diez pies. Sin embargo, escapar del período no necesariamente evitará que SharePoint haga sus travesuras. Pero supongo que al menos deberías intentarlo.

Server.UrlEncode("test.docx").Replace(".", "%2E"); 
+1

Bueno, a Sharepoint no le gusta. Creo que en la cadena de consulta o lo que sea que esté usando parte de la ruta de la url encontrar la carpeta raíz y que no puede contener un punto. % 2E de las pruebas de límite parece solucionarlo. – chobo2

+0

Me encontré con un problema similar al usar páginas web ASP.NET. Ejemplo: http://www.cutrategamer.com/app/remove-subscription/30/myemail%40gmail.com arrojaría un mensaje de error. Intentará reemplazar el período con "% 2E". –

+1

¿Alguna suerte, @ Tod1d? Estoy teniendo el mismo problema con una URL de ASP.NET Web API muy similar. –

13

Esta es una pregunta muy antigua, pero me encontré con esta búsqueda por un problema similar. Coloqué un "/" al final de mi url con períodos en ellos y solucionó el problema.

+0

Increíble. - Esto funcionó para mí con la API web. - Todo lo que puedo hacer es negar con la cabeza. DX – BrainSlugs83

+0

Solo una nota para cualquiera que utilice esta respuesta. Esto funcionará para la mayoría de los casos de uso, incluido el OP proporcionado. Esto ** no ** funciona si la URL termina con un carácter de punto. –

+0

buena solución, pero si un usuario vuelve a cargar la página vuelve a obtener 404 en Angular – Toolkit

Cuestiones relacionadas