【发布时间】:2021-07-09 08:22:06
【问题描述】:
我有一个定期发布自定义响应标头的应用。只有在请求开始时检测到特定条件,然后在将响应提供给客户端之前自动发出所需的自定义标头时,才会发生这种情况。
因为这可能在任何时间和任何类型的请求中发生,所以我使用 MVC 的结果过滤器 - IAsyncAlwaysRunResultFilter,具体来说。
这在 IIS Express 下运行良好,因为过滤器总是在响应开始提供给客户端之前触发,因此可以成功写入自定义标头。
但是在我将项目切换到 Kestrel 后,我的过滤器开始出现异常,说 “标题是只读的,响应已经开始。”.
代码中没有其他任何变化,我只是出于不相关的原因切换到 Kestrel。有没有更好的方法来实现我想要的,以便它在两个主机下都可靠地工作?
我唯一的要求是我将它与具体的控制器和动作分开,因为它是一个横切关注点,不应该污染每个动作的代码。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core iis-express kestrel-http-server