在 OpenRasta 中使用编解码器文件扩展名会返回 404
当在 OpenRasta 中使用编解码器 uri 文件扩展名时,或者无法解析 uri 并返回 404。如果没有文件扩展名,则一切正常。
编解码器是为对象资源定义的,我使用 XmlDataContract 和 JsonDataContract。使用 .xml 或 .json 扩展名都不起作用,这适用于 InMemoryHost(我们用于测试)和 ASP.Net(IIS7,集成模式)。
编解码器配置:
ResourceSpace.Has.ResourcesOfType<object>()
.WithoutUri
.AsXmlDataContract()
.And.AsJsonDataContract();
是否还需要执行其他操作才能使 uri 文件扩展名正常工作?
When using codec uri file extensions with OpenRasta, OR can't resolve the uri and returns a 404. Without the file extension all works ok.
The codecs are defined for the object resource and I'm using both XmlDataContract and JsonDataContract. Using neither the .xml or .json extension works, this is for both InMemoryHost (which we're using for testing) and ASP.Net (IIS7, integrated mode).
Codec configuration:
ResourceSpace.Has.ResourcesOfType<object>()
.WithoutUri
.AsXmlDataContract()
.And.AsJsonDataContract();
Is there anything else that needs to be done to make uri file extensions work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要在 OpenRasta 中将 ContentTypeExtensionUriDecorator 注册为 UriDecorator,以便公开 .xml、.json 功能。
下面的示例应该允许您向以下位置发出 http 请求:
GET /home.json
GET /home.xml
这是因为客户端通常会添加一个 HTTP Accept 标头来定义它支持和感兴趣的内容类型。
有关更多信息,您可以在网络上阅读有关内容协商(通常称为 conneg)的信息。
然后,OpenRasta 将根据 HTTP Accept 标头中客户端的首选项选择返回内容类型。
希望这有帮助。
You need to register the ContentTypeExtensionUriDecorator as a UriDecorator in OpenRasta in order to expose the .xml, .json functionallity.
The below example should allow you to make http requests to:
GET /home.json
GET /home.xml
This is because noramlly the client will add an HTTP Accept header to define the content types it supports and is interested in.
For more information you can read about Content Negotiation (often referred to as conneg) on the web.
OpenRasta will then select the return content type based on the client 's preference in the HTTP Accept header.
Hope this helps.