C# JavaScriptSerialized JSON字符串在fiddler上显示无效消息

C# JavaScriptSerialized JSON字符串在fiddler上显示无效消息,c#,asp.net,json,asp.net-web-api,C#,Asp.net,Json,Asp.net Web Api,我正在构建一个WEB API,它应该从SQL Server数据库中检索事件列表,并以JSON格式创建这些对象对客户端的响应 事件对象: public class OCEvents { public long event_id { get; set; } public string event_date {get; set;} public string event_time { get; set;} public string event_location { g

我正在构建一个WEB API,它应该从SQL Server数据库中检索事件列表,并以JSON格式创建这些对象对客户端的响应

事件对象:

public class OCEvents
{
    public long event_id { get; set; }
    public string event_date {get; set;}
    public string event_time { get; set;}
    public string event_location { get; set;}
    public string event_name { get; set; }
    public string event_image { get; set; }
    public string event_description { get; set; }
}
用于检索事件JSON数据的简单Web API控制器

public class EventsController : ApiController
{
    private string JSONResponse = "";

    public string getEvents()
    {
        //Create class the haandles all DB related data
        DBConnect db = new DBConnect();

        //Creates List of Event Objects
        List<OCEvents> events = new List<OCEvents>();

        //get latest events posted
        db.getOCEvents(events);

        //Serialize event objects to JSON
        JSONResponse = new JavaScriptSerializer().Serialize(events);

        //return JSON Response
        return JSONResponse;
    }
}
我的问题是打开JSON选项卡时出现了这个错误


我终于明白了。问题是getEvents方法返回的是字符串而不是HTTP响应对象。因此,我没有返回JSON字符串,而是使用了这个

public HttpResponseMessage getEvents()
    {
        //Create class the haandles all DB related data
        DBConnect db = new DBConnect();

        //Creates List of Event Objects
        List<OCEvents> events = new List<OCEvents>();

        //get latest events posted
        db.getOCEvents(events);

        //Serialize event objects to JSON
        JSONResponse = new JavaScriptSerializer().Serialize(events);

        var response = new HttpResponseMessage()
        {
            Content = new StringContent(JSONResponse)

        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        //return JSON Response
        return response;
    }
public HttpResponseMessage getEvents()
{
//创建类处理所有数据库相关数据
DBConnect db=新的DBConnect();
//创建事件对象列表
列表事件=新列表();
//发布最新事件
db.getOCEvents(事件);
//将事件对象序列化为JSON
JSONResponse=newJavaScriptSerializer().Serialize(事件);
var response=newhttpresponsemessage()
{
内容=新的StringContent(JSONResponse)
};
response.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
//返回JSON响应
返回响应;
}

您可以让系统根据用户原始请求中的accept标头来创建JSON或XML

public HttpResponseMessage getEvents()
    {
        //Create class the haandles all DB related data
        DBConnect db = new DBConnect();

        //Creates List of Event Objects
        List<OCEvents> events = new List<OCEvents>();

        //get latest events posted
        db.getOCEvents(events);

        return Request.CreateResponse(HttpStatusCode.OK, events);
    }
public HttpResponseMessage getEvents()
    {
        //Create class the haandles all DB related data
        DBConnect db = new DBConnect();

        //Creates List of Event Objects
        List<OCEvents> events = new List<OCEvents>();

        //get latest events posted
        db.getOCEvents(events);

        return Request.CreateResponse(HttpStatusCode.OK, events);
    }
    //Remove XML so only JSON is returned
    GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);