web-dev-qa-db-ja.com

「System.Web.HttpException(0x80004005):ファイルが存在しません」のトラブルシューティング方法を教えてください。

このサイトですでに回答されている場合はお詫びします。検索しましたが、この正確なシナリオは見つかりませんでした。

Log4netをWCFサービスに追加しています。 Application_Errorイベントにハンドラーを追加しましたが、すべてのリクエストでファイルが見つからないというエラーをキャッチしています。

私はこれをWebサイトで見ましたが、通常、エラーはルートディレクトリに「ファビコン」ファイルがないか、cssスタイルシートで参照されている画像が欠落していることが原因である可能性があります。

ただし、これはWCFサービスであり、CSSスタイルシートはなく、ルートにファビコンを追加しても問題は解決しませんでした。

他の誰かがこれをトラブルシューティングするための良い方法を持っていますか?

いくつかの手がかり:

  • これはまだ実際のIISサーバーにデプロイしていません、ローカルで実行しています。
  • Visual Studio内のDEBUGで実行している場合、エラーは発生しません。Webブラウザー(IEまたはChrome)からサービスにアクセスする場合のみです。
  • エラーメッセージにURLとファイルパスを追加しました。これが次のとおりです。

    URL:http:// localhost:3994 /

    FilePath:/

    エラー:System.Web.HttpException(0x80004005):ファイルが存在しません。

編集:上記の値は、ログに記録された例外に表示されるものです。

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

どんな助けでも大歓迎です。

9
camainc

サービスが指定されていない可能性があります。 Webサーバー(ローカル開発者も同様)がフォルダーの要求を受信すると、そのフォルダー内でデフォルトページ(通常はindex.htm、index.html、default.asp、default.aspxなどと呼ばれます)を探し、 (RESTベースのサービスの説明を使用している場合を除く))VSから実行すると、デバッグによって実際のサービスに直接移動します。

この場合、サービスを構築したため、正確なサービスの場所、つまりhttp://localhost:3994/service.svcを指定する必要があります。

また、デバッグセッションを開始してからURLをhttp://localhost:3994/に変更すると、デバッガーの場合にこれが当てはまるかどうかを確認できるはずです。

6
David McEwing