.net web api不会以json格式返回

.net web api不会以json格式返回,.net,json,vb.net,entity-framework,asp.net-web-api,.net,Json,Vb.net,Entity Framework,Asp.net Web Api,我在web api中有一个名为vote的控制器,这是一个post请求,从主体中获取一些参数,如果成功,它应该返回投票者的id,或者如果他以前投票过,则返回已经投票的id。对于第二种情况,我是对的。但是当用户投票成功时,我得到了这个错误 { "message": "An error has occurred.", "exceptionMessage": "The 'ObjectContent`1' type failed to serialize the response body for

我在web api中有一个名为vote的控制器,这是一个post请求,从主体中获取一些参数,如果成功,它应该返回投票者的id,或者如果他以前投票过,则返回已经投票的id。对于第二种情况,我是对的。但是当用户投票成功时,我得到了这个错误

   {
"message": "An error has occurred.",
"exceptionMessage": "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.",
"exceptionType": "System.InvalidOperationException",
"stackTrace": null,
"innerException": {
    "message": "An error has occurred.",
    "exceptionMessage": "Error while copying content to a stream.",
    "exceptionType": "System.Net.Http.HttpRequestException",
    "stackTrace": "   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.WebHost.HttpControllerHandler.<WriteBufferedResponseContentAsync>d__1b.MoveNext()",
    "innerException": {
        "message": "An error has occurred.",
        "exceptionMessage": "The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.",
        "exceptionType": "System.ObjectDisposedException",
        "stackTrace": "   at System.Data.Entity.Core.Objects.ObjectContext.ReleaseConnection()\r\n   at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.Finally()\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)\r\n   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)\r\n   at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding)\r\n   at System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding)\r\n   at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken)"
    }
}
}
这是控制器

 Namespace Controllers
Public Class VoteController
    Inherits ApiController






    Function Post(<FromBody> ByVal user As Voting) As HttpResponseMessage

        Try
            Using entities As ElectionsEntities = New ElectionsEntities()
                Dim entity = entities.Votings.FirstOrDefault(Function(e) e.Elector_FK_ID = user.Elector_FK_ID)
                If entity Is Nothing Then
                    Dim message = Request.CreateResponse(HttpStatusCode.Created, entities.SP_Voting_Insert(user.Elector_FK_ID, user.City_FK_ID, user.Voting_Center_FK_ID, user.class_FK_ID))
                    message.Headers.Location = New Uri(Request.RequestUri, user.Elector_FK_ID.ToString())
                    Return message
                Else
                    Dim message = Request.CreateResponse(HttpStatusCode.BadRequest, "هذا الشخص قام بالتصويت")
                    Return message
                End If
            End Using
        Catch e As Exception
            Return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)
        End Try
    End Function

End Class
 End Namespace 
任何帮助都将不胜感激,
提前感谢

内部异常看起来与实体框架相关。通常情况下,上下文已被处理。。。EF中的错误与。您确定正在立即执行您使用范围内的所有内容吗?我特别关注entities.SP_Voting_Insert方法。我只能推断它的作用,但您可能需要确保它立即执行,而不是在处理对象上下文之后执行


本应作为评论发布,但唉。。。我还没有权限。

SP工作正常,通过它将用户添加到数据库的方式,但它会提示该错误,但我需要返回没有任何错误的响应嗯。。。用户创建方法SP_Voting_Insert是否包含处理对象上下文的代码?我更新了问题,添加了SP im,看一看,可能是SELECT@@IDENTITY查询在处理对象上下文后才执行。您能够使用断点进行调试吗?我会尝试将SP_Voting_Insert的结果存储在一个变量中并检查它,或者您可以尝试调用SP_Voting_Insert.ToString或类似的方法来强制执行。对不起,我的建议含糊不清-我有EF的经验,但不是VB.NET。
 Namespace Controllers
Public Class VoteController
    Inherits ApiController






    Function Post(<FromBody> ByVal user As Voting) As HttpResponseMessage

        Try
            Using entities As ElectionsEntities = New ElectionsEntities()
                Dim entity = entities.Votings.FirstOrDefault(Function(e) e.Elector_FK_ID = user.Elector_FK_ID)
                If entity Is Nothing Then
                    Dim message = Request.CreateResponse(HttpStatusCode.Created, entities.SP_Voting_Insert(user.Elector_FK_ID, user.City_FK_ID, user.Voting_Center_FK_ID, user.class_FK_ID))
                    message.Headers.Location = New Uri(Request.RequestUri, user.Elector_FK_ID.ToString())
                    Return message
                Else
                    Dim message = Request.CreateResponse(HttpStatusCode.BadRequest, "هذا الشخص قام بالتصويت")
                    Return message
                End If
            End Using
        Catch e As Exception
            Return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)
        End Try
    End Function

End Class
 End Namespace 
 @Elector_FK_ID bigint,
@City_FK_ID bigint,
@Voting_Center_FK_ID bigint,
@class_FK_ID as bigint
 AS
 BEGIN

SET NOCOUNT ON;


insert into [Elections].[dbo].[Voting]
(
    [Elector_FK_ID],[VoteDate],[City_FK_ID],[Voting_Center_FK_ID],[class_FK_ID]
)
values
(
    @Elector_FK_ID,getdate(),@City_FK_ID,@Voting_Center_FK_ID,@class_FK_ID
)
select @@IDENTITY