簡體   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