c# - OData AspNetCore 对使用 $query 的长 URL 的支持不起作用
问题描述
正如本文所指出的,使用$query关键字可以解决Microsoft.AspNetCore.OData
.
但在我的项目中(我使用的是 8.preview3 版本)我尝试使用这个但我不断收到404 not found错误。这是我的工作 URL 示例:
https://localhost:44346/odata/WFC/APost/
https://localhost:44346/odata/WFC/APost/?$select=id
...
但是当我使用带有$query的 POST 请求时,我收到 404 错误:
POST: https://localhost:44346/odata/WFC/APost/$query
Content-Type: text/plain
Request Body: $select=id
我想知道是否必须添加任何代码来启用 $query 功能!?
这是我的代码的相关部分:
// version 8.preview3 of Microsoft.AspNetCore.OData code
services.AddOData(
opt => opt.AddModel("odata", GetEdmModel()).Select().Count().Filter().OrderBy().SetAttributeRouting(true));
...
public IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
var s = builder.EntitySet<WeatherForecast>("WFC").EntityType;
s.Collection.Action("APost");
return builder.GetEdmModel();
}
和控制器:
[ODataRoutePrefix("WFC")]
public class WeatherForecast2Controller : ODataController
{
...
[HttpPost]
[EnableQuery]
[ODataRoute("APost")]
public IEnumerable<WeatherForecast> APost()
{
// this function just returns array of 10 WeatherForecast(s) .
...
}
}