2016-04-26 80 views
0

我使用实体框架的Web API项目,我正打算使实体框架是动态的动态实体框架的Web API

在一个正常的MVC应用程序,我做了[在运行时更改连接字符串]这就像

public class ApiRepository 
{ 
    public WebApiLabDbEntities dbContext; 
    public ApiRepository() 
    { 
     string connection_string = (string)(System.Web.HttpContext.Current.Session["Connection"]); 
     if (String.IsNullOrEmpty(connection_string)) 
     { 
      dbContext = new WebApiLabDbEntities(); 
     } 
     else 
     { 
      dbContext = new WebApiLabDbEntities(connection_string); 
     } 


    } 

} 

但是,在一个项目的WebAPI我不能设置在连接字符串中如会话[“连接”]会话对象

那么什么是另一种方式来达到同样的? Web API将使用基于令牌的身份验证,并且auth_token将决定要使用的连接字符串。

+0

这听起来像你想要什么是在WebAPI中使用Session。这个有可能。以此为例子http://stackoverflow.com/questions/9594229/accessing-session-using-asp-net-web-api – smoksnes

+0

我正打算读和的access_token基于它构建connection_string并将其保存在像一些地方要么会话或附加请求[不知道是否可能],然后从Session或从Request对象进行访问 –

回答

0

如果您的连接字符串取决于身份验证的用户,那么你应该根据当前的用户索赔(例如使用Thread.CurrentPrincipal as ClaimsPrincipal和阅读出具索赔)适用你的逻辑。

当然,这意味着你应该发出一个要求,这将使你的身份了解不同的连接字符串。

这是董事会的话题,在很大程度上取决于什么样的认证,授权和正在使用的幕后身份框架,但这个帖子可能会导致你走向正确的方向:ASP.NET Web API Claims Authorization with ASP.NET Identity 2.1 – Part 5