2010-05-14 29 views

Respuesta

23

Si desea permitir que la solicitud a través, es necesario agregar requestPathInvalidCharacters y configurarlo a una cadena vacía:

<system.web> 
    <httpRuntime requestPathInvalidCharacters="" /> 
</system.web> 

Editar debe dejar su pregunta original en su lugar, porque ahora mi respuesta no tiene sentido.

Pero en respuesta a su segunda pregunta, es porque% 3f corresponde a '?' que no está permitido en los nombres de archivos en Windows. Puede establecer la propiedad relaxedUrlToFileSystemMapping a true para cambiar este comportamiento:

<system.web> 
    <httpRuntime requestPathInvalidCharacters="" 
       relaxedUrlToFileSystemMapping="true" /> 
</system.web> 

es posible que desee mirar a través de todas las propiedades de la clase HttpRuntimeSection para ver si hay cualesquiera otros que puedan aplicarse.

También puede implementar una subclase de RequestValidator y configurar su web.config para usar su subclase (que presumiblemente permitirá todas las URL a través de?). Personalmente, no me molestaría y simplemente dejaré que las clases integradas lo manejen. Es poco probable que un usuario normal vaya al accidentalmente escriba en "% 3f" en una ruta, y ¿por qué molestarse en tantos problemas para mejorar el uso de casos para usuarios malintencionados?

Esto, por cierto, es en realidad una nueva característica en ASP.NET 4, por lo que Stack Overflow no escupe un error: se está ejecutando en .NET 3.5.

+0

Eso resolvió el problema. pero obtengo otro error para otra url. Editaré la pregunta. – stacker

+0

1. Reescribe la ruta. 2. devuelve una página en blanco (o página de error personalizada). 3. redirigir a la página de inicio. Quiero tener el poder de decidir cómo responder a este tipo de error. – stacker

+0

¿Puedo tener pruebas de integración para esto? http://stackoverflow.com/questions/2831075/integrationtests-a-potentially-dangerous-request-path-value-was-detected-from-t – stacker

1

Probablemente porque se parece mucho a una url malformada.

& se utiliza como separador para la consulta parámetros de cadena, es decir, site.com/page?some=20 & otra = 15

+0

Eso es correcto. pero imagine que alguien publica una url como esta en su sitio y el usuario ve un error como este ... ¡es confuso! – stacker