【问题标题】:ExpandoObject in ViewStateViewState 中的 ExpandoObject
【发布时间】:2019-10-27 21:41:13
【问题描述】:

有趣的是,在 ASP.NET Web 应用程序上开发模块时,我一直在 ViewState 中存储一些缓存的对象数据,有些定义明确,有些则没有(即:将它们声明为 dynamic 并将它们初始化为 @ 987654322@)。

这在我的 Windows 10 IIS 10 开发盒的开发过程中运行良好,但是一旦我将它推送到带有 IIS 10(运行 .NET 4.5、4.6、4.7 或 4.8)的 Windows Server Core 2016 中,它就不起作用了,我明白了System.ArgumentException: Error serializing value 'System.Dynamic.ExpandoObject' of type 'System.Dynamic.ExpandoObject.' ---> System.Runtime.Serialization.SerializationException: Type 'System.Dynamic.ExpandoObject' in Assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. 错误。

我想知道什么可以在本地环境而不是在服务器端进行这项工作,因为ExpandoObject 本身不能序列化,所以想知道我的本地环境如何将这些对象存储在视图状态中并恢复它们好吗?

编辑:实际上,我添加到视图状态的所有其他对象也没有标记为可序列化,现在开始在服务器上出现问题。考虑到添加到视图状态的对象都不是可序列化的,这怎么可能在本地工作?

【问题讨论】:

    标签: asp.net .net expandoobject


    【解决方案1】:

    服务器上的 web.config 是否将 enableviewstate 设置为 false?

    【讨论】:

    • 不,没有指定,所以默认true。这很奇怪,因为其他本机类型保持得很好(即:字符串、长等)。只有 ExpandoObject 和其他一些不可序列化的对象会在服务器上发出错误,但不要在本地发出错误,这首先让我感到困惑。
    猜你喜欢
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多