3

我注意到 OpenRasta.Core 有一个 HtmlErrorCodec,它负责在处理程序抛出异常时呈现服务器错误页面。

当我向异常抛出处理程序发出 JSON Ajax 请求时,会选择此编解码器并将异常呈现为 HTML。

我试图用 MediaType("application/json") 为 IList<Error> 注册我自己的 IMediaTypeWriter,这样我就可以将 JSON 发送回浏览器,但它似乎被忽略了。任何人都可以帮忙吗?

谢谢尼尔

4

2 回答 2

1

你能抓住你的异常,把它们包装在一个类型中,然后做一些类似的事情:

ResourceSpace.Has.ResourcesOfType<MyErrorWrapper>().WithoutUri.AsJsonDataContract()
于 2011-08-31T15:20:28.267 回答
1

如果出现错误,确实会选择带有 IList 的编解码器,但会遵循类型的正常连接。

我建议查看请求日志并找出选择 html 编解码器的方式和原因(我怀疑我的远程调试隧道视觉您可能有一个浏览器发送相当于Accept: text/html,application/json, 在这一点上 OR 不' t真的知道这两者中的哪一个是可以接受的,这可能是一个错误,因为我们注册 text/html 的 aq 为 1,它应该是 0.5)。如果这确实是问题所在,则解决方案是删除 html 错误编解码器的注册,您可以通过提供自己的 DependencyRegistrar 来做到这一点。

于 2011-09-01T14:53:48.587 回答