Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC-从Web API访问会话_Asp.net Mvc_Session_Asp.net Web Api - Fatal编程技术网

Asp.net mvc MVC-从Web API访问会话

Asp.net mvc MVC-从Web API访问会话,asp.net-mvc,session,asp.net-web-api,Asp.net Mvc,Session,Asp.net Web Api,使用MVC 当然,在Web API中进行身份验证之后,我希望分配会话(“LoggedIn”)值True 但是我的Web API中的会话不断返回NullReference 有解决办法吗 谢谢。WebApiConfig.cs public static class WebApiConfig { public static string UrlPrefix { get { return "api"; } } public static strin

使用MVC

当然,在Web API中进行身份验证之后,我希望分配
会话(“LoggedIn”)
True

但是我的Web API中的会话不断返回
NullReference

有解决办法吗

谢谢。

WebApiConfig.cs

public static class WebApiConfig
    {
        public static string UrlPrefix         { get { return "api"; } }
        public static string UrlPrefixRelative { get { return "~/api"; } }

        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: WebApiConfig.UrlPrefix + "/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    ...

    protected void Application_PostAuthorizeRequest()
    {
        if (IsWebApiRequest())
        {
            HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
        }
    }

    private bool IsWebApiRequest()
    {
        return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(WebApiConfig.UrlPrefixRelative);
    }

}

有关详细信息

您需要设置支持HTTP请求所需的会话状态行为的类型

您可以在Global.asax文件中的应用程序\u PostAuthorizerRequest()中进行更改

using System.Web.Http;
using System.Web;
using System.Web.SessionState;

namespace Sample
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            WebApiConfig.Register(GlobalConfiguration.Configuration);
        }

        protected void Application_PostAuthorizeRequest()
        {           
            HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);           
        }       
    }
}
这肯定会对你有帮助。