3

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

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

编解码器配置:

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

为了使 uri 文件扩展工作正常,还有什么需要做的吗?

4

1 回答 1

4

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

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

获取 /home.json

获取 /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 标头来定义它支持和感兴趣的内容类型。

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

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

希望这可以帮助。

于 2011-02-10T16:44:22.687 回答