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

时间:2011-07-18 12:00:26

标签: 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进行测试,支持删除方法

1 个答案:

答案 0 :(得分:1)

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