Я создаю веб-сервис с веб-контроллером api. Я хочу иметь возможность создать сеанс и проверить состояние сеанса. У меня есть следующие:.NET Web API + Тайм-аут сеанса
Контроллер:
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);
Когда я запускаю этот код, я продолжаю получать нулевую ссылку в сессия.
HttpContext.Current.Session.Add("Username", user);
//session["Username"] = user;
//session.Add("Username", user);
Кто-нибудь знает, почему я не могу установить переменную сеанса на что-либо. Неважно, какой метод я использую не из трех, которые работают. Код брал с другого поста.
Не используйте сеанс в веб-Api. Это побеждает цель. – Shyju
Мне нужно. Я не знаю другого пути. Я новичок в веб-API. все еще исследуя это. но на время beng мне нужно использовать его –
Возможный дубликат [сеанса веб-API ASP.NET или что-то?] (http://stackoverflow.com/questions/11478244/asp-net-web-api-session-or- что-то) –