を続けるdosn't簡単な例は次のとおりです。 ミドルウェア:単純なミドルウェアの例。起動方法は、ここで処理
public class AuthorizationMiddleware
{
private readonly RequestDelegate _next;
public AuthorizationMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Headers.Keys.Contains("X-Not-Authorized"))
{
context.Response.StatusCode = 401;
return;
}
await _next.Invoke(context);
}
}
public class RequestHeaderMiddleware
{
private readonly RequestDelegate _next;
public RequestHeaderMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Headers.Keys.Contains("X-Cancel-Request"))
{
context.Response.StatusCode = 500;
return;
}
await _next.Invoke(context);
// not calling
context.Response.Headers.Add("X-Transfer-Success", "true");
await context.Response.WriteAsync("test");
}
}
public class ProcessingTimeMiddleware
{
private readonly RequestDelegate _next;
public ProcessingTimeMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var watch = new Stopwatch();
watch.Start();
await _next(context);
context.Response.Headers.Add("X-Processing-Time-Milliseconds", new[] { watch.ElapsedMilliseconds.ToString() });
}
}
登録:
app.UseMiddleware<AuthorizationMiddleware>();
app.UseMiddleware<RequestHeaderMiddleware>();
app.UseMiddleware<ProcessingTimeMiddleware>();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
がなぜこのコード
await context.Response.WriteAsync("test");
はクラスで呼び出していないのですか? MVCを登録した場合にのみ動作します。 MVCはメソッドの実行を続行できないようにしますか?私はCで何かを逃した#?
私はレスポンスヘッダが設定されていなかったと言っていなかった、私はコードが – Wachburn
は、ドキュメントをチェック@Wachburn、あなたは彼が参照しているかを確認します(デバッガでこれを確認してください)すべてに寄港されていないと言います。文書の最初の警告。クライアントに既に返送されてきたレスポンスを変更しようとすると、その前の行でエラーが出るため、書き込みは呼び出していません – Nkosi