我有一个asp.net web api应用程序:
Web.config
<system.web>
<sessionState mode="StateServer" timeout="1500" />
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<globalization culture="fr-FR" uiCulture="fr" />
</system.web>
在控制器中
ITaigaTimeSheet itaiga;
public TaigaApiController()
{
if (HttpContext.Current.Session["taigaclass"] == null)
{
string mail = (string)HttpContext.Current.Session["User_mail"];
HttpContext.Current.Session["taigaclass"] = new TaigaTimeSheet(mail);
}
itaiga = (TaigaTimeSheet)HttpContext.Current.Session["taigaclass"];
}
在BLL
[Serializable()]
public partial class TaigaTimeSheet : ITaigaTimeSheet
{
ITaigaClient client = null;
Itimesheet SabCruder = null;
ICrud<vw_sab_client_affaire> cruder = null;
List<Project> taigaProjets = new List<Project>();
List<Member> taigaMembers = new List<Member>();
List<vw_sab_client_affaire> client_affaires = new List<vw_sab_client_affaire>();
List<vw_sab_client_affaire> All_client_affaires = new List<vw_sab_client_affaire>();
public TaigaTimeSheet()
{
client = new TaigaClient();
client.GetMembersAndProjects(ref taigaProjets, ref taigaMembers);
SabCruder = new Timesheet();
cruder = new Crud<vw_sab_client_affaire>("stblinked");
client_affaires = cruder.GetAll().ToList();
All_client_affaires = cruder.GetAll().ToList();
}
}
我需要使用TaigaTimeSheet
模式将类StateServer
的实例存储为会话变量。
但我得到了这个例外:
无法序列化会话状态。在&#39; StateServer&#39;和&#39; SQLServer&#39;在模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果自定义会话状态存储在&#39;自定义&#39;中进行类似的序列化,则适用相同的限制。模式。
所以我需要知道:
谢谢,
答案 0 :(得分:1)
出于测试目的,除了taigaProjects和taigaMembers之外,将everthing标记为不可序列化。
错误基本上说你的TiageTiemSheet类中有一些不可序列化的对象,不允许用于serilization。我建议你向你不需要的成员添加非序列化属性。