I define a function for GeminiTickets like this:
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");
in GeminiTicketsController...
public async Task<IHttpActionResult> GetNewTickets([FromODataUri] List<int> projectIds, DateTime? startDate = null, DateTime? endDate = null) {...};
When I want to access this function with all parameters, everything is fine: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3],startDate=2016-06-10,endDate=2016-06-22)
But if I send no parameter at all of if I try to send e.g. only projectIds, IIS gives me a 500 Internal Error: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])
I found that we can set a parameter to be optional:
geminiTicketsParam.Parameter<DateTime?>("startDate").OptionalParameter = true;
But it's doing nothing. Any idea ?
Thank you!
OptionalParameter means it can be null, you can try with
startDate=null,endDate=null