Таким образом, выясняется, что проблема здесь в том, что Owin и asp.net не переплетаются в полном жизненном цикле вместе, как я думал.
Короче говоря, жизненный цикл запроса выглядит примерно так:...
- Делать вещи Owin (все промежуточные программы owin)
- Делать вещи MVC
- Делать вещи сервера
...что мне нужно ...
- Делать вещи
- Делать вещи MVC
- Делать вещи Owin
- Работать на сервере
... конечно, я сильно упрощаю этот процесс, но я думаю, что короткий способ объяснить это, когда вы делаете ...
app.Use((context, next) => { ... }).UsestageMarker(?);
... естьнет отметки этапа для «обработки ответа завершено».
Интересно, что ядро aspnet дает нам гораздо больший контроль, поскольку тесная интеграция со всеми компонентами на протяжении жизненного цикла запроса в меньшей степени зависит от предварительно определенных этапов и больше зависит от вас, пользователь, определяющий вашсобственный процесс обработки запросов и построения ответа.
Короче ... в ядре aspnet я могу делать то, что пытаюсь сделать, но это не представляется возможным в связи с .net 4.6
Однако я сделал несколько ссылокк использованию фильтров и обработке «OnActionExectuted», которое, если вы посмотрите, у вас будет совершенно другой объект Запроса и Ответа, чем те, которые были переданы вам конвейером промежуточного программного обеспечения owin (таким образом, добавив больше доказательств того, что эти вещи на самом деле не один процесс, а просто два, которые происходятв порядке).
С тех пор я потратил время на то, чтобы перенести мое приложение в ядро aspnet ... что оказалось головной болью больше, чем я ожидал, но я всегда надеюсь наконечный результат будет чище и быстрее.