微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net core middleware

测试用中间件

  // 需要安装Dynamic.Json
  // install-package Dynamic.Json

    public class CheckMiddleware
    {
        private RequestDelegate Next { get; init; }
        public CheckMiddleware(RequestDelegate next)
        {
            Next = next;
        }

        public async Task Invoke(HttpContext context)
        {
            string password = context.Request.Query["password"];

            if (password == "123")
            {
                if (context.Request.HasJsonContentType())
                {
                    using (Stream stream = context.Request.BodyReader.Asstream())
                    {
                        dynamic dynamic = await DJson.ParseAsync(stream);
                        context.Items["BodyJson"] = dynamic;
                    }

                    await Next.Invoke(context);
                }
            }
            else
                context.Response.StatusCode = 401;
        }
    }

只对"/test"使用该中间件

app.Map("/test", pipebuilder =>
{
    pipebuilder.UseMiddleware<CheckMiddleware>();
    pipebuilder.Run(async context =>
    {
        object? obj = context.Items["BodyJson"];

        if (obj != null)
            await context.Response.WriteAsync($"body: {obj}");
        await context.Response.WriteAsync("Run<br/>");
    });
});

测试

POST https://localhost:7132/test?password=123 HTTP/1.1
content-type: application/json

{
    "name": "sample",
    "time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
###

结果

HTTP/1.1 200 OK
Connection: close
Date: Tue, 15 Feb 2022 06:44:18 GMT
Server: Kestrel
transfer-encoding: chunked

body: {
    "name": "sample",
    "time": "Wed, 21 Oct 2015 18:27:50 GMT"
}Run<br/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐