在OpenRasta中使用编解码器uri文件扩展名时,或者无法解析uri并返回404.没有文件扩展名,一切正常。
为对象资源定义了编解码器,我使用的是XmlDataContract和JsonDataContract。既不使用.xml或.json扩展,也适用于InMemoryHost(我们用于测试)和ASP.Net(IIS7,集成模式)。
编解码器配置:
ResourceSpace.Has.ResourcesOfType<object>()
.WithoutUri
.AsXmlDataContract()
.And.AsJsonDataContract();
还有什么需要做的才能使uri文件扩展名有效吗?
答案 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标头中的客户端首选项选择返回内容类型。
希望这有帮助。