Wie kann man „System.Web.httpexception (0x80004005) beheben: Datei existiert nicht“?

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

  •  26-10-2019
  •  | 
  •  

Frage

Entschuldigung, wenn dies bereits auf dieser Website beantwortet wurde, habe ich dieses Szenario gesucht, aber nicht genau gefunden.

Ich füge einen WCF -Dienst Log4Net hinzu. Ich habe einen Handler im Ereignis application_error hinzugefügt, und es fängt eine Datei, die bei jeder Anfrage nicht gefunden wurde, nicht gefunden.

Ich habe dies mit Websites gesehen, und normalerweise kann der Fehler darauf zurückzuführen sein, dass keine "Favicon" -Datei im Root -Verzeichnis oder auf ein fehlendes Bild in einem CSS -Stylesheet bezeichnet wird.

Dies ist jedoch ein WCF -Dienst, es gibt kein CSS -Stylesheet, und das Hinzufügen eines Favicon zur Wurzel hat das Problem nicht gelöst.

Hat noch jemand eine gute Möglichkeit, dies zu beheben?

Einige Hinweise:

  • Ich habe dies noch nicht für den echten IIS -Server bereitgestellt, ich leite ihn lokal aus.
  • Der Fehler tritt nicht auf, wenn ich in Debug in Visual Studio ausführe, nur wenn ich auf den Service von einem Webbrowser (dh oder Chrome) auf den Dienst zugreift, zugreift.
  • Ich habe die Fehlermeldung der URL und dem Dateipfad hinzugefügt, und das sind sie:

    URL: http: // localhost: 3994/

    Dateipfad: /

    Fehler: System.Web.httpexception (0x80004005): Die Datei gibt es nicht.

Bearbeiten: Die oben genannten Werte werden in der protokollierten Ausnahme angezeigt:

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);
}

Jede Hilfe wäre sehr geschätzt.

War es hilfreich?

Lösung

Der Grund ist wahrscheinlich, dass der Dienst nicht angegeben wurde. Wenn ein Webserver (auch der lokale Entwickler auch eine Anforderung für einen Ordner erhalten, schauen sie in diesem Ordner nach der Standardseite (normalerweise genannt: index.htm, index.html, Standard.asp, Standard.aspx usw.) und) und) Präsentieren Sie dies (es sei denn, Sie verwenden eine ruhbasierte Dienstbeschreibung). Wenn Sie von gegenüber dem Debug ausgehen, führt Sie direkt zum tatsächlichen Service.

In diesem Fall, da Sie einen Dienst erstellt haben, müssen Sie den Standort des genauen Dienstes angeben, dh dh http://localhost:3994/service.svc.

Außerdem: Wenn Sie eine Debug -Sitzung starten und dann die URL zu ändern auf http://localhost:3994/ Sie sollten in der Lage sein, dies beim Debugger zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top