.NET Web API + Session-Timeout

Erstelle ich ein web-service mit dem web-api-controller. Ich möchte in der Lage sein, um eine Sitzung zu erstellen, und überprüfen Sie den status der Sitzung. Ich habe Folgendes:

Controller:

public string Get(string user, string pass)
{
        bool loginValue = false;
        loginValue = UserNamepassword(user, pass);

        if (loginValue == true)
        {
            HttpContext.Current.Session.Add("Username", user);                
            //session["Username"] = user; 
            //session.Add("Username", user);
            if ((string)HttpContext.Current.Session["Username"] != null)
            {
                HttpContext.Current.Session.Add("Time", DateTime.Now);

                return "Username: " + (string)HttpContext.Current.Session["Time"] + (string)HttpContext.Current.Session["Username"];
            }
            return "Logged in but session is not availabe for " + (string)HttpContext.Current.Session["Username"];
        }            
        else
            return "Login failed for " + user;
}

WebConfig

public static void RegisterRoutes(RouteCollection routes)
    {
        var route = routes.MapHttpRoute(
            name: "SessionApi",
            routeTemplate: "api/{controller}/{user}/{pass}",
            defaults: new { user = RouteParameter.Optional, pass = RouteParameter.Optional }
        );
        route.RouteHandler = new MyHttpControllerRouteHandler();
    }
    public class MyHttpControllerHandler: HttpControllerHandler, IRequiresSessionState
    {
        public MyHttpControllerHandler(RouteData routeData): base(routeData){ }
    }
    public class MyHttpControllerRouteHandler: HttpControllerRouteHandler
    {
        protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new MyHttpControllerHandler(requestContext.RouteData);
        }
    }

Global.asax.cs

WebApiConfig.RegisterRoutes(RouteTable.Routes);

Wenn ich diesen code ausführen ich erhalte immer null-Verweis in der Sitzung.

HttpContext.Current.Session.Add("Username", user);                
//session["Username"] = user; 
//session.Add("Username", user);

Wer weiß, warum ich nicht festlegen, dass die session-variable zu nichts. Es spielt keine Rolle, welche Methode ich verwenden, die nicht von den drei arbeiten. Der code wurde von einem anderen Beitrag.

  • Verwenden Sie keine Sitzung in der web-Api. Dass Niederlagen der Zweck.
  • Ich zu haben. Ich weiß nicht, andere Weise. Ich bin neu in Web-API. noch recherche auf es. aber für die Zeit, beng, die ich brauche, es zu benutzen
  • mögliche Duplikate von ASP.NET Web-API-Sitzung oder so etwas?
InformationsquelleAutor Program_ming | 2014-12-03
Schreibe einen Kommentar