【发布时间】:2016-07-05 09:41:16
【问题描述】:
我为 GeminiTickets 定义了一个这样的函数:
var geminiTickets = builder.EntitySet<GeminiTicket>("GeminiTickets");
var geminiTicketsParam = geminiTickets.EntityType.Collection
.Function("GetNewTickets")
.Returns<ReportDataVM>();
geminiTicketsParam.CollectionParameter<int>("projectIds");
geminiTicketsParam.Parameter<DateTime?>("startDate");
geminiTicketsParam.Parameter<DateTime?>("endDate");
在 GeminiTicketsController...
public async Task<IHttpActionResult> GetNewTickets([FromODataUri] List<int> projectIds, DateTime? startDate = null, DateTime? endDate = null) {...};
当我想用所有参数访问这个函数时,一切都很好: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3],startDate=2016-06-10,endDate=2016-06-22)
但是如果我根本不发送参数,如果我尝试发送例如只有 projectIds,IIS 给我一个 500 内部错误: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])
我发现我们可以设置一个参数是可选的:
geminiTicketsParam.Parameter<DateTime?>("startDate").OptionalParameter = true;
但它什么也没做。有什么想法吗?
谢谢!
【问题讨论】: