C# 无法使用状态服务器模式序列化类

C# 无法使用状态服务器模式序列化类,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

我有一个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>
在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();
        }
    }