ASP.NET Coreは404エラーを実装してホームページにジャンプする方法
4119 ワード
ユーザがWebブラウザでURLを間違えると、ASPにアクセスする.NET Coreサイトの次の存在しないURLアドレスは、デフォルトではASP.NET Coreはブラウザに有名な404エラーを返します.では、ASPを譲る方法はありませんか.NET Coreが404のHttpステータスコードを返すと、自動的にホームページにジャンプしますか?
ASPを使用する.NET Coreのミドルウェア(Middleware)でいいです.
まず、いったんASPを処理するためにJump 404 Middlewareというミドルウェアクラスを定義します.NET CoreのPipelineは404応答ステータスコードを返し、ウェブサイトのホームページにジャンプします.
注意Response状態コード(404であるか否か)とRedirectジャンプを検出するロジックはawait nextに書かれている.Invoke(context)の後です.
次に、Jump 404 Middlewareミドルウェアの拡張クラスJump 404 MiddlewareExtensionを定義します.
最後にASP.NET CoreのStartupクラスのConfigureメソッドでは、Jump 404 Middlewareミドルウェアを使用します.
このようにユーザがWebブラウザでURLを間違えると、ASPにアクセスする.NET Coreサイトの次の存在しないURLアドレスの場合、ASP.NET Coreは404エラーに戻るのではなく、ユーザーブラウザのURLアドレスをサイトのホームページにジャンプしてエラーを報告することを避け、現在では多くの大手サイト(京東、淘宝など)がこの機能を実現している.
転載先:https://www.cnblogs.com/OpenCoder/p/10011338.html
ASPを使用する.NET Coreのミドルウェア(Middleware)でいいです.
まず、いったんASPを処理するためにJump 404 Middlewareというミドルウェアクラスを定義します.NET CoreのPipelineは404応答ステータスコードを返し、ウェブサイトのホームページにジャンプします.
public class Jump404Middleware
{
private readonly RequestDelegate next;
public Jump404Middleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(
Microsoft.AspNetCore.Http.HttpContext context)
{
await next.Invoke(context);
var response = context.Response;
// 404
if (response.StatusCode == 404)
{
response.Redirect("/");
}
}
}
注意Response状態コード(404であるか否か)とRedirectジャンプを検出するロジックはawait nextに書かれている.Invoke(context)の後です.
次に、Jump 404 Middlewareミドルウェアの拡張クラスJump 404 MiddlewareExtensionを定義します.
public static class Jump404MiddlewareExtension
{
public static void UseJump404(this IApplicationBuilder app)
{
app.UseMiddleware();
}
}
最後にASP.NET CoreのStartupクラスのConfigureメソッドでは、Jump 404 Middlewareミドルウェアを使用します.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseJump404();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
このようにユーザがWebブラウザでURLを間違えると、ASPにアクセスする.NET Coreサイトの次の存在しないURLアドレスの場合、ASP.NET Coreは404エラーに戻るのではなく、ユーザーブラウザのURLアドレスをサイトのホームページにジャンプしてエラーを報告することを避け、現在では多くの大手サイト(京東、淘宝など)がこの機能を実現している.
転載先:https://www.cnblogs.com/OpenCoder/p/10011338.html