![](/img/trans.png)
[英]Getting NullReferenceException on IIS Express while running from Visual Studio 2019
[英]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.