使OData服务在IIS中工作

本文关键字:工作 IIS OData 服务 | 更新日期: 2023-09-27 18:21:26

我有一个来自MS的OData服务示例。这是相关的代码:

        using (WebApp.Start(_baseAddress, Configuration))
        {...}

    public static void Configuration(IAppBuilder builder)
    {
        HttpConfiguration config = new HttpConfiguration();
        config.MapODataServiceRoute(routeName: "OData", routePrefix: "odata", model: GetModel());
        builder.UseWebApi(config);
    }

带有

    private static IEdmModel GetModel()
    {
        ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Product>("Products");
        return builder.GetEdmModel();
    }

这工作得很好,产品控制器也很棒。我现在正试图将它转移到一个web项目中,以便在IIS中工作,但我返回了一个空白文档。我已经设法追踪到

builder.UseWebApi(config);

或者至少当我评论这句话时,它给出了同样的行为。样品来自https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataOpenTypeSample/因为我正在尝试对返回对象使用DynamicProperties。

以下是我的IIS项目WebApiConfig:的代码

        public static void Register(HttpConfiguration config)
        {
            // Web API routes
            config.MapHttpAttributeRoutes();
            config.MapODataServiceRoute(routeName: "OData", routePrefix: "odata", model: GetModel());
        }
        private static IEdmModel GetModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Product>("Products");
            var edmModel = builder.GetEdmModel();
            return edmModel;
        }

使OData服务在IIS中工作

此示例https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataActionsSample/在IIS主机上,你可能想将你的项目与它进行比较。MapHttpAttributeRoutes();需要。