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

时间:2015-05-04 16:41:39

标签: c# .net asp.net-web-api asp.net-web-api2

我有一个"数据库参考"带有这些信息的表格

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

    我必须这样做:

    1. 从查询字符串中获取一些信息以访问"数据库参考"
    2. 访问"数据库参考"获取连接字符串
    3. 我必须通过DI(Unity)
    4. 发送此连接字符串或存储库构造函数

      我很难使用会话变量(我知道更少的状态),但我不想在2次通话之间保留任何内容。

      我创建了几个带有应用程序变量的解决方案,但就我而言,它不是正确的方法。

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

      你可以帮帮我吗?

      谢谢,

      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 }
              );
      
          }
      }
      

1 个答案:

答案 0 :(得分:0)

将所有数据库连接字符串信息移至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 

}