使用OpenRasta的编解码器文件扩展名返回404

时间:2011-02-10 10:46:46

标签: openrasta

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

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

编解码器配置:

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

还有什么需要做的才能使uri文件扩展名有效吗?

1 个答案:

答案 0 :(得分:4)

您需要在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();
        }
    }
}

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

有关详细信息,您可以在网上阅读有关内容协商(通常称为连接)的信息。

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

希望这有帮助。