Ошибка получения значения из 'CompiledAssembly' при запуске сайта в IIS, хорошо в Visual Studio

Я запускаю проект MVC и использую Json, у меня есть код, который работает правильно при запуске в Visual Studio, затем у меня есть сайт на IIS, указывающий на ту же папку, когда выполняется URL-адрес с сайта IIS, мой код не выполнить так же, как в 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?

0 ответов

Недавно я столкнулся с тем же исключением по другой причине. Ваш объект 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;
            }) });
Другие вопросы по тегам