C# 无法使用状态服务器模式序列化类
我有一个asp.net web api应用程序: Web.configC# 无法使用状态服务器模式序列化类,c#,asp.net,.net,asp.net-mvc,serialization,C#,Asp.net,.net,Asp.net Mvc,Serialization,我有一个asp.net web api应用程序: Web.config <system.web> <sessionState mode="StateServer" timeout="1500" /> <authentication mode="None" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFrame
<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>
在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();
}
}
[Serializable()]
公共部分类TaigaTimeSheet:ItigAtimesheet
{
ITaigaClient=null;
Itimesheet SabCruder=null;
ICrud-cruder=null;
List taigaProjets=新列表();
List taigambers=新列表();
List client_Affairs=新列表();
列出所有客户临时事务=新列表();
公共电视时间表()
{
client=新的TaigaClient();
客户。GetMembers和项目(参考taigaProjets,参考taigaMembers);
SabCruder=新时间表();
积垢=新积垢(“stblinked”);
client_affaires=cruder.GetAll().ToList();
All_client_affaires=cruder.GetAll().ToList();
}
}
我需要使用StateServer
模式将类TaigaTimeSheet
的实例存储为会话变量
但我有一个例外:
无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果自定义会话状态存储在“自定义”模式下完成了类似的序列化,则同样的限制也适用
所以我需要知道:
谢谢,出于测试目的,请将除Taiga项目和Taigamber外的所有项目标记为不可序列化
错误基本上是说TiageTiemSheet类中存在一些不允许序列化的对象,这些对象不允许序列化。我建议您为不需要的成员添加不可序列化的属性。@Downvoter解释您的原因ItaigClient客户端是什么?我看不出您的问题有任何问题…不知道为什么会有向下投票…我通过向上投票来补偿:)好的,我知道theryare接口…我想问的是那个web代理实例?也许web代理实例不允许序列化出于测试的目的,将除TaigaProject和Taigamber之外的所有内容都标记为不可序列化,看看这个错误是否消失了?
[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();
}
}