2

我在 .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

请注意资源参数:删除方法接受整数,而我正在传递一个字符。

有了这个请求,我希望得到 404 状态代码,而不是 405 Method not allowed。任何人都可以解释这种行为,为什么它返回 405?

如果我在 URI 中给出不正确的资源名称,它会返回 404。例如:URI:http://localhost/OtherResource/a

更新:我正在使用 OpenRasta 的 InMemoryHost 进行测试,并且支持删除方法

4

1 回答 1

1

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

于 2011-08-15T11:08:30.210 回答