Iは、部分のglobal.asaxでのApplication_Errorを用いて解決します。このメソッドを追加しました
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
{
Response.Clear();
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController controller = new CommonController();
var routeData = new RouteData();
routeData.Values.Add("controller", "Common");
routeData.Values.Add("action", "PageNotFound");
var requestContext = new RequestContext(
new HttpContextWrapper(Context), routeData);
controller.Execute(requestContext);
}
}
この作業は問題ありません。コントローラからの問題です。 dbレコードが見つからない場合は、デフォルトのエラーページで404エラーを返します。私はリダイレクトURLではなくオリジナルのURLをブラウザに表示したい。戻り値を使用してView();コントローラでは、これは起こりません。どのように私はそれを解決することができます?ありがとう。
こんにちは、私の問題を解決せずに両方のソリューションをお試しください。私はhttp://example.com/1234を試して(と私はルートを持っていない)サーバーは、ランタイムエラーとエラー/ 404ルートへのリダイレクトエラーで応答します。 http://example.com/1234/123(2つのパラメータ)を試してみると、これは経路で傍受され、コントローラを通過し、エラー/ 404にリダイレクトされます(ページが見つからない場合はコントローラアクションのリダイレクトがあるため)ホームコントローラのルート。ありがとう –
私はglobal.asaxでApplication_errorを使って部分的に解決します。 –