首页 > 解决方案 > 将参数传递给 OData 服务初始化

问题描述

我得到了一个使用 .NET 核心实现的 OData 服务,它在 startup.cs 文件的初始化中有这一部分:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  ...
  try
  {
     app.UseMvc(routeBuilder =>
     {
        ...
        routeBuilder.MapODataServiceRoute(
                        routeName: "name",
                        routePrefix: ModelConstants.RoutePrefix,
                        configureAction: containerBuilder =>
                        {
                            ...                
                           containerBuilder.AddService<IODataQueryProcessor>(ServiceLifetime.Singleton, typeof(DefaultODataQueryProcessor));
                        ...
     }

如何将参数传递给DefaultODataQueryProcessor具有带参数的构造函数?

标签: asp.netasp.net-coredependency-injectionodata

解决方案


根据您的描述,我建议您可以尝试以下代码:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapODataServiceRoute(
                     routeName: "name",
                     routePrefix :"aaa",
                      configureAction: containerBuilder => {
                          containerBuilder.AddService<IODataQueryProcessor>(Microsoft.OData.ServiceLifetime.Singleton, serviceProvider => {
                              return new DefaultODataQueryProcessor("someString");
                          } );
                      }

                 );

        });

推荐阅读