使OData服务在IIS中工作

时间:2014-09-09 17:38:20

标签: c# iis odata

我有一个来自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;
        }

1 个答案:

答案 0 :(得分:0)

此示例https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataActionsSample/位于IIS主机上,您可能希望将项目与其进行比较。而且我不认为config.MapHttpAttributeRoutes();需要。