Tuesday, 15 April 2014

c# - WebAPI2 + Angular http GET - returning IEnumerable. failed to serialize the response body for content type 'application/json -



c# - WebAPI2 + Angular http GET - returning IEnumerable<Categories>. failed to serialize the response body for content type 'application/json -

greetings , give thanks reading post !

ok.. pretty easy some, me... i'm learning speak , find of pretty unusual , hard ;)

here rest service phone call in angular:

$scope.categories = []; $scope.selectedcategory = null; $http({ method: 'get', url: './api/file/getcategories', accept: 'application/json' }) .success(function(result) { $scope.categories = result; });

here service i'm trying fetch : (c# - filecontroller.cs)

public ienumerable<category> getcategories() { homecoming fileservices.getcategoriesforuser(); }

fileservices method :

public static ienumerable<category> getcategoriesforuser() { user currentuser = userservices.getloggedinuser(); ienumerable<category> usercategories; using (var context = new photoentities()) { usercategories = context.categories.where(c => c.userid == currentuser.id); } homecoming usercategories; }

the issue don't recognize json @ all, but... alas.. here whole response-error msg :

{"message":"an error has occurred.","exceptionmessage":"the 'objectcontent`1' type failed serialize response body content type 'application/json; charset=utf-8'.","exceptiontype":"system.invalidoperationexception","stacktrace":null,"innerexception":{"message":"an error has occurred.","exceptionmessage":"error getting value 'categories' on 'system.data.entity.dynamicproxies.user_523afe24d26493bb74e43eaa23aaebfd40d7eabfcaa3a6105eb951b365e60a04'.","exceptiontype":"newtonsoft.json.jsonserializationexception","stacktrace":" @ newtonsoft.json.serialization.dynamicvalueprovider.getvalue(object target)\r\n @ newtonsoft.json.serialization.jsonserializerinternalwriter.calculatepropertyvalues(jsonwriter writer, object value, jsoncontainercontract contract, jsonproperty member, jsonproperty property, jsoncontract& membercontract, object& membervalue)\r\n @ newtonsoft.json.serialization.jsonserializerinternalwriter.serializeobject(jsonwriter writer, object value, jsonobjectcontract contract, jsonproperty member, jsoncontainercontract collectioncontract, jsonproperty containerproperty)\r\n @ newtonsoft.json.serialization.jsonserializerinternalwriter.serializevalue(jsonwriter writer, object value, jsoncontract valuecontract, jsonproperty member, jsoncontainercontract containercontract, jsonproperty containerproperty)\r\n @ newtonsoft.json.serialization.jsonserializerinternalwriter.serialize(jsonwriter jsonwriter, object value, type objecttype)\r\n @ newtonsoft.json.jsonserializer.serializeinternal(jsonwriter jsonwriter, object value, type objecttype)\r\n @ newtonsoft.json.jsonserializer.serialize(jsonwriter jsonwriter, object value)\r\n @ system.net.http.formatting.basejsonmediatypeformatter.writetostream(type type, object value, stream writestream, encoding effectiveencoding)\r\n @ system.net.http.formatting.jsonmediatypeformatter.writetostream(type type, object value, stream writestream, encoding effectiveencoding)\r\n @ system.net.http.formatting.basejsonmediatypeformatter.writetostream(type type, object value, stream writestream, httpcontent content)\r\n @ system.net.http.formatting.basejsonmediatypeformatter.writetostreamasync(type type, object value, stream writestream, httpcontent content, transportcontext transportcontext, cancellationtoken cancellationtoken)\r\n--- end of stack trace previous location exception thrown ---\r\n @ system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task)\r\n @ system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task)\r\n @ system.runtime.compilerservices.taskawaiter.getresult()\r\n @ system.web.http.webhost.httpcontrollerhandler.<writebufferedresponsecontentasync>d__1b.movenext()","innerexception":{"message":"an error has occurred.","exceptionmessage":"the objectcontext instance has been disposed , can no longer used operations require connection.","exceptiontype":"system.objectdisposedexception","stacktrace":" @ system.data.entity.core.objects.objectcontext.get_connection()\r\n @ system.data.entity.core.objects.objectquery`1.getresults(nullable`1 formergeoption)\r\n @ system.data.entity.core.objects.objectquery`1.execute(mergeoption mergeoption)\r\n @ system.data.entity.core.objects.dataclasses.entitycollection`1.load(list`1 collection, mergeoption mergeoption)\r\n @ system.data.entity.core.objects.dataclasses.entitycollection`1.load(mergeoption mergeoption)\r\n @ system.data.entity.core.objects.dataclasses.relatedend.load()\r\n @ system.data.entity.core.objects.dataclasses.relatedend.deferredload()\r\n @ system.data.entity.core.objects.internal.lazyloadbehavior.loadproperty[titem](titem propertyvalue, string relationshipname, string targetrolename, boolean mustbenull, object wrapperobject)\r\n @ system.data.entity.core.objects.internal.lazyloadbehavior.<>c__displayclass7`2.<getinterceptordelegate>b__1(tproxy proxy, titem item)\r\n @ system.data.entity.dynamicproxies.user_523afe24d26493bb74e43eaa23aaebfd40d7eabfcaa3a6105eb951b365e60a04.get_categories()\r\n @ getcategories(object )\r\n @ newtonsoft.json.serialization.dynamicvalueprovider.getvalue(object target)"}}}

any help rewarded digital beer ;)

try adding register() function in config file in app_start folder:

var json = config.formatters.jsonformatter; json.serializersettings.preservereferenceshandling = newtonsoft.json.preservereferenceshandling.objects; config.formatters.remove(config.formatters.xmlformatter);

i had similar problem , fixed me. taken from: http://social.msdn.microsoft.com/forums/vstudio/en-us/a5adf07b-e622-4a12-872d-40c753417645/

c# angularjs rest asp.net-web-api2

No comments:

Post a Comment