У меня есть приложение asp.net Web API:Невозможно сериализовать класс, используя режим сервера State
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
.
Но я получаю это исключение:
Невозможно сериализации состояния сеанса. В режиме «StateServer» и «SQLServer» ASP.NET будет сериализовать объекты состояния сеанса, и в результате не разрешаются объекты, не связанные с сериализацией, или объекты MarshalByRef. Такое же ограничение применяется, если аналогичная сериализация выполняется в пользовательском хранилище состояний сеанса в режиме «Пользовательский».
Так что мне нужно знать:
- Как я могу это исправить?
- В чем причина этой ошибки?
Спасибо,
@Downvoter объясняет ваши причины –
Что такое клиент ITaigaClient? – Viru
Ошибка в основном говорит о том, что в вашем классе TiageTiemSheet есть некоторые несериализуемые объекты, которые не разрешены для сериализации ..... Я предлагаю вам добавить несериализуемый атрибут для членов, которые вам не нужны ... – Viru