Error: Type '' is not marked as serializable in Asp.Net Core
Dung Do Tien
Mar 02 2021
385
I have a project with Asp.Net core 3.1. I created a View component to display some data into my view but I got an error: Type 'CMS.Models.SalonPromo' in Assembly 'CMS.Plugin.Product, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
This is the detail of that error:
System.Runtime.Serialization.SerializationException: Type 'CMS.Domains.Models.SalonPromo' in Assembly 'CMS.Plugin.Product, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(Type type)
at System.Runtime.Serialization.FormatterServices.<>c.<GetSerializableMembers>b__5_0(MemberHolder mh)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder)
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, BinaryFormatterWriter serWriter, Boolean fCheck)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Boolean check)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
at DVG.Autoportal.Chobrod.Core.Infrastructure.Caching.RedisCached.ZipToBytes[T](T item, String key) in C:\CMS.Core\Infrastructure\Caching\RedisCached.cs:line 647
And this is my model:
public class SalonPromo
{
public int SalonId { get; set; }
public int PositionId { get; set; }
public int[] ProductIds { get; set; }
public string Banner { get; set; }
public string Description { get; set; }
}
And this is my ViewComponent code behind:
public async Task<IViewComponentResult> InvokeAsync(int position)
{
try
{
var salonPromo = await _cacheAppService.ExecuteAsync(() => _salonService.GetSalonPromoByPosition(position), StaticVariable.CacheDataExpireShortTime);
return View(salonPromo);
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
return View(new SalonPromo());
}
}
Thanks for any suggestions.
Have 1 answer(s) found.
-
m-4
majid gholipour Mar 02 2021
You have to add a
[Serializable]
filter attribute to yourSalonPromo
model which you want to serialize.[Serializable] public class SalonPromo { public int SalonId { get; set; } public int PositionId { get; set; } public int[] ProductIds { get; set; } public string Banner { get; set; } public string Description { get; set; } }
I hope it helpful for you.
* Type maximum 2000 characters.
* All comments have to wait approved before display.
* Please polite comment and respect questions and answers of others.