【发布时间】:2020-09-17 08:05:34
【问题描述】:
我编写了一个 odata v3 web api 并调用它,但它会引发错误。
OData 路径无效。 检测到无效操作。 'Get' 不是可以绑定到 'Collection([EPICOR.Models.TasksList Nullable=False])' 的操作。 Microsoft.Data.OData.ODataException 在 System.Web.Http.OData.Routing.DefaultODataPathHandler.ParseAtEntityCollection(IEdmModel 模型,ODataPathSegment 以前,IEdmType previousEdmType,String 段)在 System.Web.Http.OData.Routing.DefaultODataPathHandler.ParseAtCollection(IEdmModel 模型,ODataPathSegment 以前,IEdmType previousEdmType , 字符串段)在 System.Web.Http.OData.Routing.DefaultODataPathHandler.Parse 的 System.Web.Http.OData.Routing.DefaultODataPathHandler.ParseNextSegment(IEdmModel 模型,ODataPathSegment 上一个,IEdmType 上一个EdmType,字符串段)的 System.Web.Http.OData.Routing.DefaultODataPathHandler.Parse(IEdmModel 模型,字符串odataPath) 在 System.Web.Http.OData.Routing.ODataPathRouteConstraint.Match(HttpRequestMessage request, IHttpRoute route, String parameterName, IDictionary`2 values, HttpRouteDirection routeDirection)
我的代码:
public class TasksPlanController : ODataController
{
private static ODataValidationSettings _validationSettings = new ODataValidationSettings();
// GET: odata/TasksPlan
[EnableQuery]
public List<Models.TasksList> Get(string module)
{
//var query= "";
using (var context = new TasksPlanEntities())
{
List<Models.TasksList> ts = new List<Models.TasksList>();
if (module.ToLower() == "PEMS".ToLower())
{
var query = from PIRTL in context.PIRTaskLists
select PIRTL;
ts = query.Select(x => new Models.TasksList { PIRCode = x.PIRCode, FunctionalLocation = x.FunctionalLocation, TaskName = x.TaskName, OperationCode = x.OperationCode, OperationNo = x.OperationNo, StartDate = x.StartDate, LastInspDate = x.LastInspDate, NextInspDate = x.NextInspDate }).ToList<Models.TasksList>();
}
return ts;
}
}
webapiconfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
//config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<TasksList>("TasksPlan");
config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
//var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
//config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
调用基于 odata 的 web api 方法是否有效?
【问题讨论】:
标签: c# .net asp.net-web-api controller odata