Asp.net mvc MVC控制器和WebApi控制器之间的共享会话
我有一个web服务,它有一个MVC控制器和一个WepAPI 2控制器 MVC控制器的任务是呈现并返回部分视图的HTML。另一个MVC应用程序进行该调用,然后将生成的HTML嵌入到自己的页面中 部分视图包含一些控件,这些控件调用WebAPI控制器以临时存储数据。为此,我在Global.asax.cs中使用以下代码在WebAPI控制器中启用了会话: 当调用应用程序调用MVC控制器时,它将模型传递给它。此模型包含部分视图上的控件需要显示的一些初始数据。这与控件将使用WebAPI控制器创建/更新/删除的数据类型相同。我希望将模型中的数据放入会话中,以便部分视图中的控件能够读取/更新/删除此数据Asp.net mvc MVC控制器和WebApi控制器之间的共享会话,asp.net-mvc,session,asp.net-mvc-5,Asp.net Mvc,Session,Asp.net Mvc 5,我有一个web服务,它有一个MVC控制器和一个WepAPI 2控制器 MVC控制器的任务是呈现并返回部分视图的HTML。另一个MVC应用程序进行该调用,然后将生成的HTML嵌入到自己的页面中 部分视图包含一些控件,这些控件调用WebAPI控制器以临时存储数据。为此,我在Global.asax.cs中使用以下代码在WebAPI控制器中启用了会话: 当调用应用程序调用MVC控制器时,它将模型传递给它。此模型包含部分视图上的控件需要显示的一些初始数据。这与控件将使用WebAPI控制器创建/更新/删除的
我的问题是:有没有办法让MVC控制器访问WepAPI会话?或者有没有办法让WebAPI控制器使用与MVC控制器相同的会话?在Global.asax中添加以下代码
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);
}
}
尽量避免像这样将状态硬塞进应用程序中-将需要发送到ApicController的数据作为隐藏字段或数据属性放入视图中,这样您就可以在不依赖会话状态的情况下发送它们。我不能。部分视图中的控件是依赖于具有CRUD方法的服务器的剑道网格。为了使网格正常工作,我必须将数据存储在服务器上。检查
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);
}
}