2011-08-30 23 views
3

我注意到OpenRasta.Core有一个HtmlErrorCodec,负责呈现处理程序抛出异常时发出的服务器错误页面。OpenRasta - 将错误编码为JSON而不是HTML

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

我试图注册自己IMediaTypeWriter为IList的<错误>用的MediaType(“应用/ JSON”),所以我可以发送回JSON的浏览器,但它似乎被忽略。谁能帮忙?

感谢 尼尔

回答

1

如果有错误,确实有IList中编解码器将被选中,但会遵循正常的连接类型。

我建议看看请求日志,并找出如何以及为什么HTML编解码器被选中(我怀疑用我的远程调试隧道的愿景,你可能有一个浏览器发送相当于Accept: text/html,application/json,在哪一点OR并不真正知道哪一个是可以接受的,这可能是一个bug,因为我们注册了text/html,其中aq为1,它应该是0.5)。如果这确实是问题所在,解决方法是删除html错误编解码器的注册,您可以通过提供您自己的DependencyRegistrar来完成注册。

+0

是的,排序!与accept头有关的问题,不得不乱用JQuery。也碰到我的编解码器有q = 1.0以防万一!谢了哥们 –

1

你能正好赶上你的异常,在类型包装他们,这样做:

ResourceSpace.Has.ResourcesOfType<MyErrorWrapper>().WithoutUri.AsJsonDataContract() 
+0

是的,这是可能的,但我最好想利用OpenRasta的内部错误处理,我认为已经生成了一个类型为IList的资源