C# 如何使用会话或其他解决方案将变量发送到WebApi controlleri

C# 如何使用会话或其他解决方案将变量发送到WebApi controlleri,c#,.net,asp.net-web-api,asp.net-web-api2,C#,.net,Asp.net Web Api,Asp.net Web Api2,我有一个“数据库参考”,其中有一个包含这些信息的表 公司名称 公司代码 连接字符串 每个公司都有自己的连接字符串来访问自己的数据库。然后我有x个数据库(相同的结构),每个公司一个 我必须这样做: 从查询字符串中获取一些信息以访问“数据库引用” 访问“数据库引用”以获取连接字符串 我必须通过DI(Unity)发送此连接字符串或存储库构造函数 我使用session变量(我知道state less),但我不想在两次调用之间保留任何内容 我用应用程序变量创建了几个解决方案,但在我的例子中,这不是正确的方

我有一个“数据库参考”,其中有一个包含这些信息的表

  • 公司名称
  • 公司代码
  • 连接字符串
  • 每个公司都有自己的连接字符串来访问自己的数据库。然后我有x个数据库(相同的结构),每个公司一个

    我必须这样做:

  • 从查询字符串中获取一些信息以访问“数据库引用”
  • 访问“数据库引用”以获取连接字符串
  • 我必须通过DI(Unity)发送此连接字符串或存储库构造函数
  • 我使用session变量(我知道state less),但我不想在两次调用之间保留任何内容

    我用应用程序变量创建了几个解决方案,但在我的例子中,这不是正确的方法

    通过过滤器属性,但在这种情况下,我必须能够将值从属性发送到控制器,但之前会调用构造函数

    你能帮我吗

    谢谢

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
    
            var container = new UnityContainer();
            container.RegisterType<DbContext, DbRefernceAdministrationContext>(new HierarchicalLifetimeManager());
            container.RegisterType<DbContext, CompanyContext>(new HierarchicalLifetimeManager());
            container.RegisterType<ICompanyRepository, CompanyRepository>(new InjectionConstructor(new CompanyContext()));
    
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
        }
    }
    
    公共静态类WebApiConfig
    {
    公共静态无效寄存器(HttpConfiguration配置)
    {
    var container=new UnityContainer();
    RegisterType(新的层次结构CallifetimeManager());
    RegisterType(新的层次结构CallifetimeManager());
    RegisterType(新的注入构造函数(新的CompanyContext());
    config.Routes.MapHttpRoute(
    名称:“DefaultApi”,
    routeTemplate:“api/{controller}/{id}”,
    默认值:新建{id=RouteParameter.Optional}
    );
    }
    }
    
    将所有数据库连接字符串信息移动到app.config

    然后按从查询字符串中选择数据库引用

     config.Routes.MapHttpRoute(
                name: "DbRefApi",
                routeTemplate: "api/{controller}/{databaseref}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
      config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
    public string GetActiveConnString()
    {
       //Read from app.config file 
       //create an active repository using connection string 
    
    } 
    
    通过以下方式获取活动连接字符串:

     config.Routes.MapHttpRoute(
                name: "DbRefApi",
                routeTemplate: "api/{controller}/{databaseref}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
      config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
    public string GetActiveConnString()
    {
       //Read from app.config file 
       //create an active repository using connection string 
    
    } 
    

    我知道我能做到。但是还有连接字符串和更多其他东西