首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缺少WebApi OData HttpConfiguration扩展方法

缺少WebApi OData HttpConfiguration扩展方法
EN

Stack Overflow用户
提问于 2016-11-15 16:50:57
回答 2查看 2.1K关注 0票数 3

OData v4 HttpConfiguration扩展方法对我来说似乎缺少。下面是Web的Register:

代码语言:javascript
运行
复制
    public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        // Use camel case for JSON data.
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        config.EnableCaseInsensitive();

        config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);            
        config.MapODataServiceRoute("odata", "api", OdataConfig.GetEdm());

        config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
     );

    }
}

EnableCaseInsensitive()EnableEnumPrefixFree()这样的方法在System.Web.Odata(.Extensions)中完全缺失。

它们存在于文档中,也存在于程序集的源代码中,但是在探索我所拥有的程序集时,它们完全丢失了:

我多次尝试从Nuget重新安装OData --我似乎找不到其他有这个问题的人。准备拔出我的头发。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-15 17:03:55

就在我发到这里之后,我就想通了。通过将Nuget包降级到5.9.1,我最终得到了丢失的部分。

票数 1
EN

Stack Overflow用户

发布于 2017-02-09 14:48:45

我认为降级不是一个好的解决办法。

API已更改为依赖项注入:http://odata.github.io/WebApi/#13-04-DependencyInjection

您必须执行以下操作:(示例)

代码语言:javascript
运行
复制
public static void Register(HttpConfiguration config)
{
    // OData
    config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);

    config.MapODataServiceRoute("odata", "odata", BuildRoute);
}

private static void BuildRoute(IContainerBuilder builder)
{
    builder
        .AddService(ServiceLifetime.Singleton, s => GetEdmModel())
        .AddService<IEnumerable<IODataRoutingConvention>>(ServiceLifetime.Singleton, s => ODataRoutingConventions.CreateDefault())
        .AddService<ODataUriResolver>(ServiceLifetime.Singleton, s => new CaseInsensitiveODataUriResolver());
}

我的Resolver类如下:

代码语言:javascript
运行
复制
public class CaseInsensitiveODataUriResolver : UnqualifiedODataUriResolver
{
    public override bool EnableCaseInsensitive
    {
        get
        {
            return true;
        }

        set
        {
        }
    }
}

您可以从ODataUriResolverUnqualifiedODataUriResolverStringAsEnumResolver派生。

不可能写这样的东西

代码语言:javascript
运行
复制
s => new ODataUriResolver { EnableCaseInsensitive = true }

请参阅https://github.com/OData/WebApi/issues/812https://github.com/OData/WebApi/issues/853

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40615388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档