Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Odata 设置AllowedQueryOptions=AllowedQueryOptions.All用于所有控制器_Odata_Asp.net Web Api2 - Fatal编程技术网

Odata 设置AllowedQueryOptions=AllowedQueryOptions.All用于所有控制器

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

我有一个WebAPI项目,我想允许调用方在所有控制器上使用所有不同的查询选项

受此启发,我在WebApiConfig.Register方法中添加了以下代码:

    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