2011-07-07 27 views
14

Tengo un sitio web ASP.NET mezclado con asp clásico (estamos trabajando en una conversión a .NET) y recientemente actualicé .NET 1.1 a .NET 4.0 y pasé a integrar oleoducto en IIS 7.Googlebot causa .NET System.Web.HttpException

Dado que estos cambios ELMAH está reportando errores de ASP clásico páginas con practicamente ningún detalle (y el código de estado 404):

System.Web.HttpException (0x80004005) 
    at System.Web.CachedPathData.ValidatePath(String physicalPath) 
    at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context) 

Pero cuando solicito la página de mí mismo, no hay error ocurre. Todos estos errores que aparecen en ELMAH son causados ​​por el rastreador de Googlebot (cadena de agente de usuario).

¿Cómo es que .NET recoge los errores de páginas ASP clásico? ¿Tiene esto que ver con la tubería integrada?

¿Alguna idea de por qué el error solo ocurre cuando Google rastrea la página o cómo puedo obtener más detalles para encontrar la falla subyacente?

+2

También estoy experimentando este problema, aunque los veo en ASP.NET MVC páginas –

Respuesta

0

Parece que los rastreadores de Google va througt unos enlaces que no ya no existentes. IE podría haber algunos documentos en su sitio que remiten algunos otros documentos, pero se eliminan.

No me veo serio en mi opinión, por lo que podría considerar filtrar esa excepción.

+0

Dijo que podía solicitar la página él mismo, por lo que parece que las páginas todavía existen. – Ocelot20

1

Cuando cambió de la tubería clásica a la tubería integrada, esencialmente le dio el control a .NET, lo que significa que .NET llamará al ASP Parser. Esto agrega la capacidad de HTTPModules personalizados codificados en .NET. Código administrado que puede cambiar el resultado de la respuesta o, en el caso de elmah, darle detalles de registro.

me gustaría ver el registro, ver qué agente googlebot usuario está utilizando en el momento en que los occurrs de error y seguir el mismo camino exacto lo hizo con su agente de usuario ha cambiado.

Mozilla Firefox es el mejor navegador para esto con el complemento User Agent Switcher

14

Agregar a su archivo web.config:

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

Este disables the default check que asegura que solicitan direcciones URL se ajustan a las reglas de ruta de Windows.

Para reproducir el problema, agregue %20 (espacio libre de URL) al final de la URL, p. Ej. http://example.org/%20. Es bastante común ver este problema en los rastreadores de búsqueda cuando encuentran enlaces mal escritos con espacios, p. <a href="http://example.org/ ">example</a>.

La propiedad HttpContext.Request.Url parece recortar el espacio posterior, por lo que las herramientas de registro como ELMAH no revelan el problema real.

0

Esto sólo se aplica si está utilizando angular, pero se podrán ver esto si

<httpRuntime relaxedUrlToFileSystemMapping="false" /> (as mentioned in the previous answers) 

y se utiliza en lugar de src ng-src de una etiqueta de imagen o secuencia de comandos, i.e

<img src="{{SomeModelValue}}" /> 

debe ser

<img ng-src="{{SomeModelValue}}" /> 

Esto también podría afectar a un etiquetas las que se utilizan en lugar de href href-ng.

Cuestiones relacionadas