这是我的代码:(IIS Express,ASP.NET MVC5,调试)

类:

public class DOCUMENT_TYPE_GROUP : BaseEntityDms
{
    [DataMember]
    public int ID { get; set; }

    [StringLength(100)]
    [DataMember]
    public string NAME { get; set; }
    [DataMember]
    public int? SUBJECT_ID { get; set; }
}

客户:

[HttpPost]
    public JsonResult Create(DOCUMENT_TYPE_GROUP entity)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                return Json(new { Result = "ERROR", Message = "Form is not valid! Please correct it and try again." });
            }
            IGenericRepository _repository = new Dms.WcfService.GenericRepositoryService();
            var serializer = new JavaScriptSerializer();
            string prm = serializer.Serialize(entity);
            var result = _repository.Add(prm, entity.GetType().FullName);
            DOCUMENT_TYPE_GROUP addedDocumentTypeGroup = (DOCUMENT_TYPE_GROUP)serializer.Deserialize(result, entity.GetType());
            return Json(new { Result = "OK", Record = addedDocumentTypeGroup });
        }
        catch (Exception ex)
        {
            return Json(new { Result = "ERROR", Message = ex.Message });
        }
    }

服务:

public class GenericRepositoryService : IGenericRepository
{
    public string Add(string entity, string fullClassName)
    {
        object result;
        var serializer = new JavaScriptSerializer();
        var assembly = Assembly.LoadFrom(@"Dms.Library.dll");
        Type type = assembly.GetType(fullClassName);
        object instance = serializer.Deserialize(entity, type);
        using (DmsUOW uow = new DmsUOW("DB"))
        {
            object rep = GetRepInstance("Dms.Data." + instance.GetType().Name + "_Repository", uow);
            MethodInfo mInfo = rep.GetType().GetMethod("Add");
            result = mInfo.Invoke(rep, new object[] { instance });
            uow.Flush();
            uow.Commit();
        }
        return serializer.Serialize(result);
    }

   private object GetRepInstance(string strFullyQualifiedName, object prm)
    {
        var assembly = Assembly.LoadFrom(@"Dms.Data.dll");
        return assembly.CreateInstance(strFullyQualifiedName, false, BindingFlags.CreateInstance, null, new object[] { prm }, null, null);
    }
}

额外:

库:

public class DOCUMENT_TYPE_GROUP_Repository : RepositoryEf<DOCUMENT_TYPE_GROUP>
{
    public DOCUMENT_TYPE_GROUP_Repository(IUnityOfWork UnityOfWork) : base(UnityOfWork) { }

}

RepositoryEF:

public class RepositoryEf<TEntity> : IRepository<TEntity> where TEntity : class
{
    protected IUnityOfWork uow;
    protected DbSet<TEntity> objectSet;
    protected DbContext context;

    public RepositoryEf(IUnityOfWork UnitOfWork)
    {
        this.uow = UnitOfWork;
        this.context = UnitOfWork.Context;
        this.objectSet = context.Set<TEntity>();
    }

    public TEntity Add(TEntity entity)
    {          
        return objectSet.Add(entity);
    }
}

JavaScriptSerializer无法反序列化实体参数 . 我无法在调试时观看实例.-> object instance = serializer.Deserialize(entity, type);

我收到错误“类型'X'的对象无法转换为'X'类型” .

但,

如果我从consoleApplication调用它可以正常工作 .

安慰:

static void Main(string[] args)
    {
        DOCUMENT_TYPE_GROUP d = new DOCUMENT_TYPE_GROUP();
        d.NAME = "Generic2";
        d.SUBJECT_ID = 12;
        GenericRepositoryService service = new GenericRepositoryService();
        var serializer = new JavaScriptSerializer();
        string prm = serializer.Serialize(d);
        string s = service.Add(prm, d.GetType().FullName);
        var d2 = (DOCUMENT_TYPE_GROUP)serializer.Deserialize(s, d.GetType());
    }

DOCUMENT_TYPE_GROUP位于Dms.Library.dll中 . 所以我检查它的版本 . 我检查“C:\ Program Files(x86)\ IIS Express”我重建了解决方案 . 但它不起作用 . 我也使用Newton.Json . 但我得到同样的错误 . (对不起我的英语不好)

编辑:如果我尝试投入服务:

public string Add(string entity, string fullClassName)
    {
       ...
        object instance = serializer.Deserialize(entity, type);
        var t = (DOCUMENT_TYPE_GROUP)instance;
        ..
    }

我收到此错误:

[A] Dms.Library.DOCUMENT_TYPE_GROUP无法转换为[B] Dms.Library.DOCUMENT_TYPE_GROUP . 类型A源自'Dms.Library,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'在上下文'LoadFrom'位置'C:\ Program Files(x86)\ IIS Express \ Dms.Library.dll' . 类型B源自位于'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP的上下文'Default'中的'Dms.Library,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null' . NET文件\ root \ d33982ca \ 57fe47a5 \ assembly \ dl3 \ 4ae52973 \ 571dcfde_92b5d001 \ Dms.Library.dll' .