ServiceStack服务未在我的CustomUserSession中自动装配

时间:2013-07-04 03:45:27

标签: c# servicestack

 public class SteamUserSession : AuthUserSession
 {
        public UserService UserService { get; set; } //Should be autowired

        public long SteamID { get; private set; }

        public User CurrentUser { get; private set; }

        public Player SteamProfile { get; private set; }

        public List<SteamGame> OwnedApps { get; private set; }

        public override void OnAuthenticated(
            IServiceBase authService,
            IAuthSession session,
            IOAuthTokens tokens,
            Dictionary<string, string> authInfo)
        {
            base.OnAuthenticated(authService, session, tokens, authInfo);
            // access servicestack user server and load properies for session here
            CurrentUser = (User)UserService.Get(new GetUser(SteamID));
        }
}

1 个答案:

答案 0 :(得分:2)

AuthUserSession只是一个模型,它是从数据存储中保留和检索的,即它不是从IOC解析(和自动装配)的服务/过滤器/等或控制器。< / p>

您可以使用传入的authService从IOC检索依赖关系,例如:

public override void OnAuthenticated(
        IServiceBase authService,
        IAuthSession session,
        IOAuthTokens tokens,
        Dictionary<string, string> authInfo)
{
    base.OnAuthenticated(authService, session, tokens, authInfo);
    // access servicestack user server and load properies for session here
    var userService = authService.TryResolve<UserService>();
    CurrentUser = (User)userService.Get(new GetUser(SteamID));
}