我有一个名为 GetForPeriod 的OData函数,定义如下:
var getForPeriod =
builder.EntityType<EventModel>()
.Collection
.Function("GetForPeriod")
.ReturnsCollection<EventModelSummary>();
getForPeriod.Parameter<DateTimeOffset>("from");
getForPeriod.Parameter<DateTimeOffset>("to");
为了从这个函数中获得结果,我需要调用以下内容:
http://localhost:17257/odata/Events/Default.GetForPeriod(from=2015-12-27T00:00:00-06:00,to=2016-02-06T00:00:00-06:00)
。但是我一直收到一个错误提示:问题出在日期上,如果我使用从客户端(:)检测到一个潜在危险的请求路径值。
http://localhost:17257/odata/Events/Default.GetForPeriod(from=null,to=null)
,我会收到一个错误,指出无法将空值转换为DateTimeOffset(这很有道理)。我尝试将from和to中的冒号(:)替换为%3A,但我仍然收到相同的“危险路径”错误。有趣的是,如果我调用带有日期过滤器的事件读取路径,它就可以正常工作:http://localhost:17257/odata/Events?$filter=ScheduledDate%20ge%202015-12-27T00:00:00-06:00%20and%20ScheduledDate%20le%202016-02-06T00:00:00-06:00
。那么我该如何调用需要DateTimeOffset参数的OData函数呢?
filter=ScheduledDate%20
URL 可以工作,而他们的GetForPeriod
没有%s
并且无法工作。请注意,这会影响您整个站点的设置。 - Noumenon