2011-07-18 12 views
2

間違っていると私はOpenRasta - リソースのURIが、私は.NETサービスにOpenRastaフレームワークを使用してい

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

私の設定は以下のように見えるハンドラに以下のような方法をした際に誤ったステータスコードが返されました:

私の要求が

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

以下のように囲まれ

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

リソースのparamを遵守してください私は文字を渡している間、削除メソッドは整数を受け入れます。

このリクエストでは、代わりに404メソッドが許可されていますが、404ステータスコードが必要です。誰でもこの行動を説明できます、なぜそれが405を返すのですか?

私はURIに間違ったリソース名を与えた場合、それは元のために私404を返します。URI:http://localhost/OtherResource/a

更新:私はOpenRastaのInMemoryHostを使用して、これをテストし、方法を削除していますが

答えて

1

をサポートしている私は信じています正しい行動をする。入力されたURIはOpenRastaが所有するものと一致し、Idがintであるメソッドがあります。 URIは解析され、登録に関するメソッドは実行できません(いずれもIdという文字列はありません).ORは選択肢から外れており、リソースが登録されている間は、現在のリクエストであるため、405.

+0

ありがとうございます。 HTTP仕様書を読んだ後、私はこれについてさらに混乱しています。とにかく仕様は、応答がこのリソースのための有効なメソッドのリストを含むallowヘッダーを含まなければならないと言います。または許可ヘッダーを送信していますか?私はそのようなものを見つけることができませんでした。 – JPReddy

+0

これは、技術的な理由からこれまで提供していないものです。しかし、それは固定されます。 – SerialSeb

関連する問題