使用返回 image/jpeg 结果的 IStreamWriter 和 IHasOptions 的实现,如果 WriteTo 发生错误,则不会调用 AppHost 中的全局错误处理程序,并且图像/jpeg 标头保持不变,这会导致 HTML 错误(由 ServiceStack 生成) 带有图像/jpeg HTTP 标头。
以下是如何重现此内容的示例:
public class SampleStreamWriter : IStreamWriter, IHasOptions
{
void WriteTo(Stream responseStream)
{
// This would actually be a delegate
throw new ApplicationException("...");
}
public IDictionary<string, string> Options
{
get
{
return new Dictionary<string, string>
{
{HttpHeaders.ContentType, "image/jpeg"}
};
}
}
}
由于在 WriteTo 之前调用了 Options,因此无法在 WriteTo 中尝试/捕获并将 Content-Type 更改为例如“application/json”,并手动覆盖错误响应。
如何实现这一点,以便 HTTP 响应具有错误的 Content-Type 值,并且作为奖励,调用 AppHost 的 ServiceExceptionHandler 进行日志记录?