繁体   English   中英

在IIS中运行站点时从“ CompiledAssembly”获取值时出错,在Visual Studio中可以正常运行

[英]Error getting value from 'CompiledAssembly' when running site in IIS, fine within Visual Studio

我正在运行一个MVC项目并利用Json,我的代码在Visual Studio中运行时可以正常运行,然后在IIS上有一个指向相同文件夹的站点,而从IIS站点执行URL时我的代码却没有与在Visual Studio中执行相同的操作。

在我的代码中,我有:

return JsonConvert.SerializeObject(objectToSerialize);

当我发送RouteData.Values时,它会产生此错误:

Error getting value from 'CompiledAssembly' on 'System.CodeDom.Compiler.CompilerResults'.

at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
at Newtonsoft.Json.JsonConvert.SerializeObject(Object value)
at x.Data.Helpers.Data.JsonHelper.SerializeObject(Object objectToSerialize) in D:\Development\x\x.Data\Helpers\Data\JsonHelper.cs:line 18

我目前正在使用Newtonsoft.Json, Version=11.0.0.0

有什么想法吗? IIS是否没有Visual Studio所具有的功能?

我最近因不同的原因遇到了同样的异常。 您的RouteData.Values对象是一个RouteValueDictionary ,可以将对象作为值,其中某些对象可能具有一些属性,这些属性在调用其“ get”时会引发异常。

您可以通过传入JsonSerializerSettings对象作为第二个参数并覆盖Error EventHandler来处理这些问题。

如果只想忽略此类属性,则将ErrorEventArgs.ErrorContext.Handled设置为true应该可以解决问题。

return JsonConvert.SerializeObject(objectToSerialize, new JsonSerializerSettings() { Error = new EventHandler<Newtonsoft.Json.Serialization.ErrorEventArgs>((obj, args) => {
                args.ErrorContext.Handled = true;
            }) });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM