ServiceStack: доступ к HttpRequest в автономном приложении
В настоящее время у меня есть приложение, размещенное на IIS, которое я хотел бы переключить на использование собственного метода.
Но у меня возникают трудности с доступом к сеансу, поэтому я могу получить текущее имя пользователя.
Это код, который я использовал при хостинге под IIS, который работал отлично:
/// <summary>
/// A basic wrapper for the service stack session, to allow access to it lower down in the DAL layer without tying us to servicestack.
/// </summary>
public class ServiceStackAuthTokenService : IAuthTokenService
{
/// <summary>
/// GetCurrentAuthToken.
/// </summary>
/// <returns>A string representing the users auth name.</returns>
public string GetCurrentAuthToken()
{
// Grab the current request.
var req = HttpContext.Current.Request.ToRequest();
var res = HttpContext.Current.Response.ToResponse();
// Fetch the authentication service.
var authService = EndpointHost.AppHost.TryResolve<AuthService>();
authService.RequestContext = new HttpRequestContext(req, res, null);
// Grab the session.
var session = authService.GetSession(false);
// Return the username.
return session.UserName;
}
public string UserPropertyName
{
get { return "UserName"; }
}
}
Это добавляется на хост приложения со следующим кодом:
container.RegisterAutoWiredAs<ServiceStackAuthTokenService, IAuthTokenService>()
При запуске собственного хоста HttpContext.Current имеет значение null, как мне получить доступ к запросу в самом размещенном приложении?
Спасибо!
Обновить Дополнительные вещи, которые я попробовал:
согласно посту здесь:https://groups.google.com/forum/#!msg/servicestack/jnX8UwRWN8A/_XWzTGbnuHgJ
Было предложено использовать:
container.Register> (c => AuthService.CurrentSessionFactory);
Это просто возвращает новую IAuthSession.
То, что делает пользователь в этом посте, именно то, чего я пытаюсь достичь.
В последнем посте Mythz говорит:
Просто для ясности, чтобы сформировать ключ сеанса, который ссылается на сеанс пользователей, вам нужны куки ss-id или ss-pid (как определено ss-opts). Вы можете получить куки-файлы от объекта IHttpRequest или иным образом в ASP.NET - синглтоне HttpContext.Current.Request, поэтому любой фабрике IAuthUserSession, которую вы вводите, нужно взять что-то, что может дать ему куки-файлы, то есть либо IRequestContext, IHttpRequest, IService и т. Д.
Но я все еще не вижу способа получить доступ к IHttpRequest.