Cómo solucionar problemas "System.web.httpexception (0x80004005): el archivo no existe"?

StackOverflow https://stackoverflow.com/questions/4819170

  •  26-10-2019
  •  | 
  •  

Pregunta

Disculpas si esto ya ha sido respondido en este sitio, busqué pero no encontré este escenario exacto.

Estoy agregando log4net a un servicio WCF. Agregué un controlador en el evento Application_Error, y está capturando un archivo que no se encuentra en cada solicitud.

He visto esto con sitios web, y generalmente el error se puede rastrear para no tener un archivo "favicon" en el directorio raíz, o a una imagen faltante a la que se hace referencia en una hoja de estilo CSS.

Sin embargo, este es un servicio WCF, no hay hoja de estilo CSS, y agregar un favicón a la raíz no resolvió el problema.

¿Alguien más tiene una buena manera de solucionar esto?

Algunas pistas:

  • Todavía no he implementado esto para el servidor IIS real, lo estoy ejecutando localmente.
  • El error no ocurre cuando me ejecuto en depuración dentro de Visual Studio, solo cuando accedo al servicio desde un navegador web (es decir o Chrome)
  • Agregué la ruta de URL y archivo al mensaje de error, y esto es lo que son:

    URL: http: // localhost: 3994/

    Ruta de archivo: /

    Error: System.web.httpexception (0x80004005): el archivo no existe.

Editar: los valores anteriores son lo que se muestran en la excepción registrada:

protected void Application_Error(object sender, EventArgs e)
{
    var objErr = Server.GetLastError().GetBaseException();
    if (objErr is System.Web.HttpException)
    {
        var filePath = Context.Request.FilePath;
        var url = ((HttpApplication) sender).Context.Request.Url;
        Log.Error("URL: " + url + "; FilePath: " + filePath, objErr);
    } else
        Log.Error("Application Error", objErr);
}

Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

La razón es probable que el servicio no se haya especificado. Cuando un servidor web (el Dev local también) recibe una solicitud de una carpeta, busca dentro de esa carpeta para la página predeterminada (generalmente llamada: index.htm, index.html, default.asp, default.aspx, etc.) y Presente eso (a menos que esté utilizando una descripción del servicio basada en REST). Cuando se ejecute desde VS, la depuración lo llevará directamente al servicio real.

En este caso, porque ha creado un servicio que necesita especificar la ubicación del servicio exacto, es decir http://localhost:3994/service.svc.

Además: si comienza una sesión de depuración y luego cambia la URL a http://localhost:3994/ Debería poder verificar que este sea el caso con el depurador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top