1
我有一個創建的Web API OData v4服務。我試圖創建一個約束函數具有在OData的控制器定義簽名類似於下面的時間跨度參數:TimeSpan的Web API OData函數
var getProduction = builder.EntitySet<ProductDTO>("Products").EntityType.Collection.Function("GetProduction");
getProduction.Namespace = "ProductsService";
getProduction.ReturnsCollection<ProductionRecordDTO>();
getProduction.Parameter<DateTimeOffset>("StartDate");
getProduction.Parameter<DateTimeOffset>("EndDate");
getProduction.Parameter<TimeSpan>("SampleInterval");
:
public IQueryable<ProductionRecordDTO> GetProduction(
[FromODataUri]DateTimeOffset startDate,
[FromODataUri]DateTimeOffset endDate,
[FromODataUri]TimeSpan sampleInterval)
它在下面的OData的模型構建器配置
運行時,模型似乎已正確創建,元數據描述顯示「SampleInterval」已正確定義爲Edm.Duration類型。
當我嘗試與URL然而調用此方法如:
http://dev-pc/odata/Products/ProductsService.GetProduction(StartDate=2014-01-01T00:00:00Z, EndDate=2017-01-01T00:00:00Z, SampleInterval=P1Y)
的ODataException拋出與消息「SampleInterval = P1Y」不是在範圍內。對於我給它的每個ISO 8601持續時間格式變化也是如此。
使用:
- Microsoft.OData.Core - v6.15.0
- Microsoft.AspNet.OData - v5.9.1
提供將不勝感激的任何援助。