Odata 设置AllowedQueryOptions=AllowedQueryOptions.All用于所有控制器
我有一个WebAPI项目,我想允许调用方在所有控制器上使用所有不同的查询选项 受此启发,我在WebApiConfig.Register方法中添加了以下代码:Odata 设置AllowedQueryOptions=AllowedQueryOptions.All用于所有控制器,odata,asp.net-web-api2,Odata,Asp.net Web Api2,我有一个WebAPI项目,我想允许调用方在所有控制器上使用所有不同的查询选项 受此启发,我在WebApiConfig.Register方法中添加了以下代码: public static void Register(HttpConfiguration config) { //[already working configuration code] //Allow for $format parameter to OData queries
public static void Register(HttpConfiguration config)
{
//[already working configuration code]
//Allow for $format parameter to OData queries
config.Filters.Add(new EnableQueryAttribute()
{
AllowedQueryOptions = AllowedQueryOptions.All
});
}
代码编译并运行,但当我尝试将$format参数添加到查询时,会出现与前面相同的异常:
Query option 'Format' is not allowed. To allow it, set the 'AllowedQueryOptions' property on EnableQueryAttribute or QueryValidationSettings.
为什么WebApiConfig中的AllowedQueryOptions设置没有为所有控制器注册?控制器的方法中是否同时具有[EnableQuery]属性和ODataQueryOptions参数?只需使用[EnableQuery]属性,它将在您返回结果后应用ODataQueryOption,默认为allow格式
如果您需要ODataQueryOptions参数,则删除[EnableQuery]属性,创建您自己的ValidateSet,一切都会正常。是的,我在操作上有[EnableQuery]属性,自控制器生成以来就一直存在,但它不起作用。我在控制器方法中没有ODataQueryOptions。有趣的是:如果我删除[EnableQuery],它会工作-是否有任何设置会将[EnableQuery]的默认值更改为不允许使用$format?不,您可以看到默认情况下它是允许的,您的OData/WebAPI版本是什么?我用的是ODatav3