我正在尝试将文档流公开为特定类型的操作方法。它看起来像这样:
/odata/MyType(123)/stream <-- 这将返回一个二进制数据流。
使用 GET 访问上述端点时,我只得到 404,即使端点在控制器上显示为 [HttpGet]。
从语义上讲,使用 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?