「System.Web.httpexception(0x80004005):ファイルが存在しない」というトラブルシューティング方法は?
-
26-10-2019 - |
質問
これがすでにこのサイトで回答されている場合、私はこの正確なシナリオを検索しましたが、謝罪しました。
WCFサービスにlog4netを追加しています。 Application_Errorイベントにハンドラーを追加しましたが、リクエストごとにエラーが見つからないファイルをキャッチしています。
これはWebサイトでこれを見てきましたが、通常、ルートディレクトリに「Favicon」ファイルを持たないか、CSS StyleSheetで参照されている欠落した画像を持たないようにエラーを追跡できます。
ただし、これはWCFサービスであり、CSS StyleSheetはありません。ルートにFaviconを追加しても問題は解決しませんでした。
他の誰かがこれをトラブルシューティングする良い方法を持っていますか?
いくつかの手がかり:
- これを実際のIISサーバーにまだ展開していません。ローカルで実行しています。
- Visual Studio内でデバッグで実行されているときにエラーは発生しません。Webブラウザー(IEまたはChrome)からサービスにアクセスした場合のみです。
URLとファイルパスをエラーメッセージに追加しましたが、これは次のとおりです。
ファイルパス: /
エラー: 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);
}
どんな助けも大歓迎です。
解決
その理由は、サービスが指定されていない可能性が高いためです。 Webサーバー(ローカル開発者も)がフォルダーのリクエストを受信すると、デフォルトページ(通常はindex.htm、index.html、default.asp、default.aspxなど)のフォルダー内に表示されます。それを提示します(休憩ベースのサービスの説明を使用している場合)。 VSから実行すると、デバッグは実際のサービスに直接移動します。
この場合、サービスを構築したため、正確なサービスの場所を指定する必要があります。 http://localhost:3994/service.svc
.
また:デバッグセッションを開始してから、URLを変更した場合 http://localhost:3994/
デバッガーの場合はこれを確認できるはずです。