gpt4 book ai didi

get - OpenRasta URI 映射到错误方法并返回不一致的 http 状态代码

转载 作者:行者123 更新时间:2023-12-03 02:06:34 25 4
gpt4 key购买 nike

我在 .net 服务中使用 OpenRasta 框架,并且在处理程序中有如下两种方法

public OperationResult Get(int Number)
{
// Do some operation and get an entity
return new OperationResult.OK(Single-MyResource);
}

public OperationResult GetQ()
{
// Do some operation and get an entity
return new OperationResult.OK(List-Of-MyResource);
}

我的配置如下所示

ResourceSpace.Has.ResourcesOfType<MyResource>()
.AtUri("/MyResource/{Id}")
.And.AtUri("/MyResource")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract()


ResourceSpace.Has.ResourcesOfType<IList<MyResource>>()
.AtUri("/MyResources")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract();

Http方法:GETAcceptHeader:“应用程序/json”URI:http://testDomain.com/MyResource/

上述请求为我提供了 MyResource 列表,与我从以下请求中获得的列表相同

Http方法:GETAcceptHeader:“应用程序/json”URI:http://testDomain.com/MyResources/

将配置更改为后

ResourceSpace.Has.ResourcesOfType<MyResource>()
.AtUri("/MyResource/{Id}")
.And.AtUri("/MyResource").Named("MyResource")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract()

并在处理程序中进行适当的更改,即

[HttpOperation(HttpMethod.GET, ForUriName = "MyResource")]

OpenRasta 返回 415 http 状态代码。

上面又不一致了。

对于我的其他资源,具有与上述类似的配置OpenRasta 抛出 403 http 状态代码

最佳答案

第一种情况是正确的。您在两者之间共享一个处理程序。因此,当查看处理程序以选择方法时,会出现一个带有参数的候选者和一个不带有参数的候选者。当您访问/MyResource 时,它​​会查找处理程序并查找没有参数的方法。这是预期的行为。

在你的第二个配置中,缺少一些东西。 415 表示 OR 无法理解请求数据。由于它是 GET,因此不应该处理任何请求媒体类型。这需要一个调试日志来检查发生了什么。您确定您的请求没有附带一些请求数据和内容类型吗?

关于get - OpenRasta URI 映射到错误方法并返回不一致的 http 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com