【问题标题】:Using codec file extensions with OpenRasta returns 404使用 OpenRasta 的编解码器文件扩展名返回 404
【发布时间】:2011-02-10 10:46:46
【问题描述】:

在 OpenRasta 中使用编解码器 uri 文件扩展名时,或者无法解析 uri 并返回 404。没有文件扩展名,一切正常。

编解码器是为对象资源定义的,我同时使用 XmlDataContract 和 JsonDataContract。使用 .xml 或 .json 扩展名都不起作用,这适用于 InMemoryHost(我们用于测试)和 ASP.Net(IIS7,集成模式)。

编解码器配置:

ResourceSpace.Has.ResourcesOfType<object>()
                .WithoutUri
                .AsXmlDataContract()
                .And.AsJsonDataContract();

还需要做些什么才能使 uri 文件扩展名正常工作吗?

【问题讨论】:

    标签: openrasta


    【解决方案1】:

    您需要在 OpenRasta 中将 ContentTypeExtensionUriDecorator 注册为 UriDecorator 才能公开 .xml、.json 功能。

    以下示例应允许您向以下位置发出 http 请求:

    GET /home.json

    GET /home.xml

    public class RastaConfig : IConfigurationSource
    {
        public void Configure()
        {
            using(OpenRastaConfiguration.Manual)
            {
                ResourceSpace.Uses.UriDecorator<ContentTypeExtensionUriDecorator>();
    
                ResourceSpace.Has.ResourceOfType<Home>()
                    .AtUri("/home")
                    .HandledBy<HomeHandler>()
                    .AsXmlDataContract()
                    .And.AsJsonDataContract();
            }
        }
    }
    

    这是因为通常客户端会添加一个 HTTP Accept 标头来定义它支持和感兴趣的内容类型。

    有关更多信息,您可以在网络上阅读有关内容协商(通常称为 conneg)的信息。

    OpenRasta 然后将根据客户端在 HTTP Accept 标头中的偏好选择返回内容类型。

    希望这会有所帮助。

    【讨论】:

    • 谢谢斯科特。我们已经在测试中使用了 Accept 标头,但还想添加对文件扩展名的支持。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2022-10-02
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多