viernes, 26 de octubre de 2012

ASP.global_asax The file 'XXX.aspx' does not exist at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)

Tenemos un site

ASP.NET

hospedado en

IIS

configurado con canalización clásica y si probamos a acceder a http://www.mydomain.com/paginaquenoexiste.aspx nos devuelve el error que más abajo detallamos :

Se podría dar el caso que recibamos el error en horas en las que sabemos que nadie está conectado. En este caso seguramente sea algún robot de google u otra compañia que intenta acceder a un recurso que tiene indexado. A parte de aplicar la solución que se explica en el artículo no estaría de más enviar un sitemap actualizado mediante las herramientas webmasters que nos proporcionan la mayoría de buscadores para que eliminen el rastro de páginas que ya no existen en sus indices de búsqueda.

ASP.global_asax The file 'XXX.aspx' does not exist at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
Origen: ASP.global_asax 
Message: The file 'XXX.aspx' does not exist. 
StackTrace: at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
Type: System.Web.HttpException 
TargetSite: Void CheckVirtualFileExists(System.Web.VirtualPath) 
Identity: SERVIDOR\IUSR_SERVIDOR

IIS

si está configurado con canalización clásica no comprueba si la página existe sino que delega la petición a aspnet_isapi.dll.

ASP.NET

por defecto fuerza la ejecución de la página y se genera esta excepción.

La solución más rápida y sencilla es configurar el site desde

IIS

para que

aspnet_isapi.dll

compruebe si existe la página y en caso que no exista devuelva un 404 como resultado de la petición. Veamos como hacerlo:

Abrimos la consola de administración de

IIS

, accedemos a las propiedades del site, nos situamos en la pestaña "Directorio Particular" y pulsamos "Configuración".


En la siguiente pantalla seleccionamos la extensión correspondiente, en este caso ".aspx" y pulsamos "Modificar".


Finalmente en el siguiente formulario hemos de marcar la casilla "Comprobar si el archivo existe".


Hasta aquí el post de esta semana, os recordamos que podéis seguir

areaTIC

en las redes sociales o vía RSS!


No hay comentarios:

Publicar un comentario en la entrada