1. ホーム
  2. asp.net

[解決済み] System.Web.HttpException (0x80004005) のトラブルシューティング方法です。ファイルが存在しません" のトラブルシューティングは?

2022-01-31 02:07:27

質問内容

このサイトで既に回答されている場合は申し訳ありません。検索しましたが、このようなシナリオは見つかりませんでした。

WCFサービスにlog4netを追加しています。Application_Errorイベントにハンドラを追加したところ、すべてのリクエストでfile not foundエラーをキャッチしています。

私はこれをウェブサイトで見てきましたが、通常、ルートディレクトリに"favicon"ファイルがないか、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);
}

何かお手伝いいただけることがあれば、ぜひお願いします。

解決方法は?

サービスの指定がされていないことが原因だと思われます。 ウェブサーバ(ローカルの開発サーバも)は、あるフォルダへのリクエストを受け取ると、そのフォルダの中にあるデフォルトページ(通常、index.htm, index.html, default.asp, default.aspx などと呼ばれます)を探し、それを提示します(RESTベースのサービス記述を使用している場合を除きます)。 VSから実行すると、デバッグで実際のサービスに直接アクセスすることができます。

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

また デバッグ・セッションを開始してから、URLを http://localhost:3994/ ということをデバッガで確認することができるはずです。