はい、あなたがちょうどあなたが適切に構成IISを持っていることを確認する必要があり、404エラーが発生するURLを取得することが可能です。
処理する必要があるケースは2つあります.1つは.NETで処理される.aspxや他のページからのエラーで、もう1つは問題のあるフォルダからのエラーです、http://example.com/testurl
)またはファイル名(例:* .htm)。これは.NETで処理されません。 IIS 7では、Webアプリケーションの「ASP.NET」セクションの「.NETエラーページ」と「IIS」セクションの「エラーページ」の下にカスタム404エラーを設定する必要があります。
<system.web>
<!-- other system.web stuff -->
<customErrors defaultRedirect="/Error404.aspx" mode="On" redirectMode="ResponseRewrite">
<error redirect="/Error404.aspx" statusCode="404" />
</customErrors>
</system.web>
<system.webServer>
<!-- other system.webServer stuff -->
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Error404.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
注:あなたは404ページが実際に404件のメッセージを返すようにしたい場合は、上記のredirectMode =「ResponseRewrite」が重要であると私はそれができるとは思わないweb.configファイルの変更は、このような何かを探して終わりますIISによって設定されます。
私の例では、404エラーをすべて処理するためにError404.aspxというページを作成しました。 .NETページ(.aspxなど)が404例外をスローすると、元のファイル名はaspxerrorpathクエリ文字列変数にあります。通常のhtmやその他のページで404エラーが発生すると、元のパスをRequest.RawUrlプロパティから読み取ることができます。私はどちらかのケースを処理するために、私のError404.aspxページに次のコードを使用:
public partial class Error404 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OriginalUrl = Request.QueryString["aspxerrorpath"] ?? Request.RawUrl;
Server.ClearError();
Response.Status = "404 not found";
Response.StatusCode = 404;
}
public string OriginalUrl { get; private set; }
}
をデフォルトでは、404エラーページが404のステータスコードを返しませんので、あなたはそれを手動で設定する必要があります。詳細はthis postを参照してください。
問題がありましたか?必要に応じて私の答えを明確にすることを嬉しく思います。 – rsbarro