ドキュメント ストリームを特定の型のアクション メソッドとして公開しようとしています。次のようになります。
/odata/MyType(123)/stream <-- これはデータのバイナリ ストリームを返します。
GET を使用して上記のエンドポイントにアクセスすると、エンドポイントがコントローラーで [HttpGet] として公開されているにもかかわらず、404 しか返されません。
Get 動詞を使用してこのリソースにアクセスすることは意味的に理にかなっています。これは単にデータを取得するための操作であり、副作用ではないためです。
これまでのところ、アクション メソッドを POST 動詞の下に公開することによってのみ、これを機能させることができました。
現在、アクション メソッド コントローラーの実装は次のようになっています。
[HttpPost] // <-- I want this to be [HttpGet]
public HttpResponseMessage Test([FromODataUri] int key, ODataActionParameters parameters)
{
var fileStream = File.OpenRead(@"c:\somefile");
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(fileStream)
};
}
「MyType」にアクションメソッドを登録するコード
var entityTypeConfiguration = mapper.Builder.Entity<MyType>();
var actionConfiguration = entityTypeConfiguration.Action("stream");
actionConfiguration.Returns<HttpResponseMessage>();
実装は、次の記事に触発されています: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-actions
このアクション メソッドを Get として公開する方法を知っている人はいますか?