ServiceStack: uzyskiwanie dostępu do HttpRequest w aplikacji z własnym hostem

Obecnie mam hostowaną aplikację IIS, którą chciałbym przełączyć, aby użyć metody samodzielnego hostowania.

Ale mam problem z uzyskaniem dostępu do sesji, dzięki czemu mogę pobrać bieżącą nazwę użytkownika.

To jest kod, którego użyłem podczas hostingu w IIS, który działał idealnie:

/// <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"; }
    }
}

Jest to dodawane do hosta aplikacji z następującym kodem:

container.RegisterAutoWiredAs<ServiceStackAuthTokenService, IAuthTokenService>()

Podczas uruchamiania hostowanego HttpContext.Current ma wartość NULL, w jaki sposób uzyskać dostęp do żądania w ramach aplikacji hostowanej samodzielnie?

Dzięki!

Aktualizacja Dodatkowe rzeczy, które próbowałem:

jak na post tutaj:https://groups.google.com/forum/#!msg/servicestack/jnX8UwRWN8A/_XWzTGbnuHgJ

Zaproponowano użycie:

container.Register> (c => AuthService.CurrentSessionFactory);

To po prostu zwraca nową IAuthSession.

To, co robi użytkownik w tym poście, jest dokładnie tym, co próbuję osiągnąć.

W ostatnim poście Mythz mówi:

Żeby było jasne, aby utworzyć klucz sesji, który odwołuje się do sesji użytkowników, potrzebujesz ciasteczek SS-ID lub SS-PID (określonych przez ss-opts). Możesz wyłączyć pliki cookie z obiektu IHttpRequest lub w inny sposób w ASP.NET singleton HttpContext.Current.Request, więc dowolna fabryka IAuthUserSession, którą wstrzykasz, musi wziąć coś, co może dać jej pliki cookie, tj. IRequestContext, IHttpRequest, IService itp.

Ale wciąż nie widzę sposobu na uzyskanie dostępu do IHttpRequest.

questionAnswers(1)

yourAnswerToTheQuestion