Son zamanlarda yeni bir sunucuya taşınan bir WEB API projemiz var. Ben onun yük için bazı eklemeler yaptıktan sonra projemi koşuyorum, ama aniden aşağıdaki hatayı atar:" 'Newtonsoft.Json.Serialization.DefaultContractResolver' yazın türü 'System.Net.Http.Formatting.JsonContractResolver' nesne döküm edilemiyor."
Unable to cast object of type 'System.Net.Http.Formatting.JsonContractResolver' to type 'Newtonsoft.Json.Serialization.DefaultContractResolver'.
kod kusurlu hattı Global.asax içinde:
protected void Application_Start() {
GlobalConfiguration.Configure(WebApiConfig.Register);
var serializerSettings =
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var contractResolver =
(DefaultContractResolver)serializerSettings.ContractResolver;
contractResolver.IgnoreSerializableAttribute = true;
}
inanıyorum Bu kod, API'nin varsayılan çıktısı XML olduğundan ve bunun yerine JSON olması gerektiğinden eklenmiştir. (DefaultContractResolver)
vurgulama
o NewtonSoft.JSon.Serialization.DefaultContractResolver
başvuran belirten bir araç ipucu getirir. Serialractettings.ContractResolver başvuruları vurgulanıyor IContractResolver JSonSerializerSettings.ContractResolver
.
kod süredir bu makinede olmuştur ve ben değiştim sanırım tek şey .NET yeni bir sürümünü yüklemeden edildi.
Ne aniden bir hata oluşturması kod satırını neden olabilir? Ve bunu nasıl çözebilirim?
Teşekkürler!
Düzenleme:
json += "{\"employeename\": \"" + Convert.ToString(reader["Employee"])
+ "\"},";
return JsonConvert.DeserializeObject<OrgChartModel>(json);
EDIT2:: Açıklamalarda isteği uyarınca, benim seri kodu aşağıdaki gibi bir şey oluşur Şimdi .NET 4.5 azalıyor. Bilgimin en iyisi olarak, 4.2'yi daha önce çalıştırdık, ancak birkaç ay olduğunu gördük, emin olamıyorum. Dominick tarafından yorumun gereğince
, şuna DefaultContractResolver için döküm değiştirmeyi denedim: var contractResolver =
(IContractResolver)serializerSettings.ContractResolver;
Ancak bu, daha sonra API biter aşağıdaki hatayı dönen:
{"Message":"The requested resource does not support http method 'GET'."}
json seri kodunuzu ekleyebilir misiniz?Seriyi kullanarak desantifikasyonu doğrudan dinamik nesneye doğru kullandığınızı şüpheliyim. –
Ben dönüş sınıf 'IContractResolver JSonSerializerSettings.ContractResolver' çünkü hata, SerializerSettings kadar gelir düşünmek ve istediğinizden daha hiç' cast'it allready 'NewtonSoft.JSon dll' dahildir' (DefaultContractResolver) 'olarak o sen dahil Yani, DefaultContractResolver'ınızı dll olanları değil, kendiniz belirtmeniz gerekir. – DomeTune
@PranavPatel - Bitti. Bu yardımcı olur mu? :) – SchmitzIT