2011-01-27 56 views
8

申し訳ありませんが、このサイトで既に回答されている場合、私は検索しましたが、この正確なシナリオは見つかりませんでした。"System.Web.HttpException(0x80004005):ファイルが存在しません"のトラブルシューティング方法

私はlog4netをWCFサービスに追加しています。私は、Application_Errorイベントにハンドラを追加し、すべてのリクエストでファイルが見つかりませんでした。

私はこれをウェブサイトで見たことがあります。通常、エラーは、ルートディレクトリに「favicon」ファイルがないか、CSSスタイルシートで参照されている画像が欠落していることがわかります。

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

誰かがこれを解決する良い方法はありますか?

いくつかの手がかり:

  • 私はそれをローカルに実行している、本物のIISサーバーにはまだこれを展開していません。私は、Visual Studio内でDEBUGで実行しているとき、私は、Webブラウザ(IEやChrome)からサービスにアクセスする場合にのみエラーは、発生しません
  • 私は、エラーメッセージにURLやファイルパスを追加し、これは彼らが何であるかです:

    URL:http://localhost:3994/

    ファイルパス:/

    エラー: 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); 
} 

任意の助けいただければ幸いです。

+0

URLに.svcファイルを記述するのを忘れましたか? – Pradeep

+0

私の質問に投稿した編集をご覧ください。 – camainc

+1

はコメントなどでコードの書式を設定する 'キー(〜文字を含むキー)も使用します。 –

答えて

6

サービスが指定されていない可能性があります。 Webサーバー(ローカルの開発者も同様)がフォルダの要求を受け取ると、そのフォルダの中をデフォルトのページ(通常はindex.htm、index.html、default.asp、default.aspxなど)と見なします。それを提示してください(あなたがRESTベースのサービス記述を使用している場合を除きます)。 VSから実行すると、デバッグは実際のサービスにまっすぐに進みます。

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

また、デバッグセッションを開始してURLをhttp://localhost:3994/に変更すると、これはデバッガで確認できます。

+0

これは、なぜこれが起こっているのか理解する助けになりました。プロダクション環境ではあまり頻繁に起こらないほうがいいと思うので、あまりにも心配する必要はありません。 – camainc

+1

さらに、静的なhtmlページをデフォルトとして追加して、そのサイトに何がどこに誰に連絡するのかをユーザーに何も知らせないようにします。とにかく404(見つからない)エラーをログに記録しないので、エラーを渡すことについて心配する必要はありません。 –

+0

ありがとう!それは有益な提案です。 – camainc

関連する問題