c# - OpenRasta - 资源 uri 不正确时返回不正确的状态代码

标签 c# .net rest http-status-codes openrasta

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

public OperationResult Delete(int Id)
{
  // Do some operation and get an entity
  return new OperationResult.OK(MyResource);
}

我的配置如下所示:

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

我的请求框架如下

HttpMethod: DELETE
AcceptHeader: "application/xml"
URI: http://localhost/MyResource/a

请注意资源参数:delete 方法接受整数,而我传递的是字符。

对于这个请求,我期望 404 状态代码,而不是 405 方法不允许。谁能解释这种行为,为什么会返回 405?

如果我在 URI 中提供了错误的资源名称,它会返回 404。例如:URI:http://localhost/OtherResource/a

更新:我正在使用 OpenRasta 的 InMemoryHost 和 Delete 方法进行测试

最佳答案

我相信这种行为是正确的。输入的 URI 与一个 OpenRasta 拥有的匹配,并且您有一个方法,其中 Id 是一个 int。 URI 被解析并且没有注册方法可以执行(它们都没有字符串作为 Id),所以 OR 是没有选择的并且知道虽然资源已经注册,但没有方法可以执行当前请求,因此是 405。

关于c# - OpenRasta - 资源 uri 不正确时返回不正确的状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732559/

相关文章:

c# - 如何在 C# 中合并/提取重复的代码结构

c# - 删除事件处理程序

c# - 结合 WCF、NHibernate 和 Ninject

.net - MQ系列消息不止一次被读取

java - 如何模拟离线 Spring Boot 应用程序

c# - 如何阻止为每个请求重新创建 WCF 服务?

asp.net - 为什么在调用 Application_Error() 时 Response.StatusCode 设置为 200?

web-services - 为什么将 SOAP 用于 Web 服务?

swift - Kitura 的 session 路线?

c# - 通过 XAML 代码在 WPF TextBox 中制作多行文本