【问题标题】:Owin test server how to add a header before executing middlewareOwin测试服务器如何在执行中间件之前添加标头
【发布时间】:2017-06-05 19:45:33
【问题描述】:

我正在使用 OWIN 中间件,并且正在尝试设置在控制器上设置的标头。对于单元测试,我试图在测试中设置标题无济于事。设置此标头的最佳方法是什么?

[TestMethod]
public async Task HasHeader()
{
        using (var server = TestServer.Create(app =>
        {
            //need to set header before calling the below middleware header name is bobsyouruncle
            app.Use(typeof(HeaderMiddleware));

        }))

        using (var client = new HttpClient(server.Handler))
        {
            var response = await client.GetAsync("http://win.example.com/bob/");
            System.Diagnostics.Debugger.Break();
        }
}

【问题讨论】:

    标签: c# .net unit-testing owin owin-middleware


    【解决方案1】:

    创建一个设置标头的测试中间件。

     [TestMethod]
     public async Task HasHeader()
      {
        using (var server = TestServer.Create(app =>
        {
            //need to set header before calling the below middleware header name is bobsyouruncle
            app.Use(typeof(TestMiddleware));
            app.Use(typeof(HeaderMiddleware));
    
        }))
        using (var client = new HttpClient(server.Handler))
        {
            var response = await client.GetAsync("http://win.example.com/bob/");
            System.Diagnostics.Debugger.Break();
        }
    }
    

    中间件

     public TestMiddleware(OwinMiddleware next)
            : base(next)
        {
    
    
        }
    
        public async override Task Invoke(IOwinContext context)
        {
            await Next.Invoke(context);
            context.Response.Headers.Add("bobsyouruncle", new string[] { "test1234" });
    
    
        }
    

    我不确定如何传递该标头值。

    【讨论】:

    • 您可以在中间件构造函数中添加额外的参数,并在将中间件添加到链中时传递参数,例如app.Use(typeof(HeaderMiddleware), "headerValue");
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2018-01-14
    • 2018-12-22
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多