Owin Middleware - OnSendingHeaders回调被调用两次

时间:2017-10-16 18:56:30

标签: c# owin

在我的Owin Middleware中,我订阅了对OnSendingHeaders的回调。在我的UnitTests中,回调是有时被调用两次。大多数情况下,第一个TestCase成功,第二个失败。有时两者都成功,有时两者都失败了我在制作中也遇到了这个问题。

据我所知documentation,这个Callback只能被调用一次。我是否误解了文档?或者这是一个错误?是否有一种“干净”的方式来处理这种行为?

public class MyMiddleware
{
    public void Initialize(Func<IDictionary<string, object>, Task> next) { }

    public int Count { get; private set; }

    public async Task Invoke(IDictionary<string, object> env)
    {
        IOwinContext context = new OwinContext(env);
        context.Response.OnSendingHeaders(dummy =>
        {
            Count++;
        }, null);

        await context.Response.WriteAsync("something");
    }
}


[TestFixture]
public class MyMiddlewareTests
{
    [TestCase(1), TestCase(2)]
    public async Task TheTest(int dummy)
    {
        var myMiddleware = new MyMiddleware();
        using (var server = TestServer.Create(app => { app.Use(myMiddleware); }))
        {
            var response = await server.HttpClient.GetAsync("/");
            Assert.AreEqual(1, myMiddleware.Count);
        }
    }
}

编辑:在最初的问题中,我说我没有看到生产中出现的问题。这改变了,所以问题不仅仅是测试。

编辑2:我们意识到我们在生产上遇到了不同的问题,即我只能确认使用testserver调用了两次回调。

0 个答案:

没有答案
相关问题