我的mvc项目中有ServiceStack,并且我正在尝试在ServiceStack和ASP MVC之间共享会话。我按照https://github.com/ServiceStack/ServiceStack/wiki/Sessions中的所有步骤共享会话,但是当我尝试在asp mvc控制器中获取UserSession的值时,它显示空VAUE...why is Null?我有这个代码
AppHost.cs
{
ControllerBase<CustomUserSession>
public class CustomUserSession : AuthUserSession
{
public string CustomProperty1 { get; set; }
public string CustomProperty2 { get; set; }
}
public class AppHost
: AppHostBase
{
public AppHost() //Tell ServiceStack the name and where to find your web services
: base("StarterTemplate ASP.NET Host", typeof(HelloService).Assembly) { }
public override void Configure(Funq.Container container)
{
Plugins.Add(new SessionFeature());
container.Register<ICacheClient>(new MemoryCacheClient());
//Set JSON web services to return idiomatic JSON camelCase properties
ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;
//Configure User Defined REST Paths
Routes
.Add<Hello>("/hello")
.Add<Hello>("/hello/{Name*}");
//Uncomment to change the default ServiceStack configuration
//SetConfig(new EndpointHostConfig {
//});
//Enable Authentication
//ConfigureAuth(container);
//Register all your dependencies
container.Register(new TodoRepository());
//Set MVC to use the same Funq IOC as ServiceStack
ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));
ServiceStackController.CatchAllController = reqCtx => container.TryResolve<HomeController>();
}
/* Uncomment to enable ServiceStack Authentication and CustomUserSession
private void ConfigureAuth(Funq.Container container)
{
var appSettings = new AppSettings();
//Default route: /auth/{provider}
Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider(appSettings),
new FacebookAuthProvider(appSettings),
new TwitterAuthProvider(appSettings),
new BasicAuthProvider(appSettings),
}));
//Default route: /register
Plugins.Add(new RegistrationFeature());
//Requires ConnectionString configured in Web.Config
var connectionString = ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString;
container.Register<IDbConnectionFactory>(c =>
new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
container.Register<IUserAuthRepository>(c =>
new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));
var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
authRepo.CreateMissingTables();
}
*/
public static void Start()
{
new AppHost().Init();
}
}
}HomeController.com
public class HomeController : ControllerBase
{
public virtual ActionResult Index()
{
ViewBag.Message = "Sharing Sessions Btw SS and ASP MVC";
return View();
}
[HttpGet]
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(User request)
{
var user_Session = SessionFeature.GetOrCreateSession<CustomUserSession>(CacheClient);
return Json(user_Session);
}所以user_Session是null ...你能帮帮我吗?
发布于 2013-10-25 13:50:07
尝试从ServiceStackController继承,例如:
public class HomeController : ServiceStackController<CustomUserSession>
{
[HttpPost]
public ActionResult Login(User request)
{
CustomUserSession userSession = base.UserSession;
return Json(userSession);
}
}此外,如果您希望使用自定义UserSession (即,不是AuthUserSession默认设置),则需要告诉ServiceStack如何创建它,方法是在AuthFeature构造函数中指定它:
Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider(appSettings),
})); https://stackoverflow.com/questions/19581890
复制相似问题