C# 从Umbraco API控制器返回json作为默认值

C# 从Umbraco API控制器返回json作为默认值,c#,asp.net,json,umbraco,C#,Asp.net,Json,Umbraco,正如标题所说,我希望返回json作为默认值,而不是XML。在普通的Web API中,我可以编辑App_Start/WebApiConfig.cs并添加以下行,但在Umbraco中找不到编辑配置的位置 config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 我不希望我的方法返回JsonResult来实现这一点 您可以创建自定义的global.asax.cs,如下

正如标题所说,我希望返回json作为默认值,而不是XML。在普通的Web API中,我可以编辑App_Start/WebApiConfig.cs并添加以下行,但在Umbraco中找不到编辑配置的位置

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

我不希望我的方法返回JsonResult来实现这一点

您可以创建自定义的global.asax.cs,如下所示:

using System;
using System.Net.Http.Headers;
using System.Web.Http;
using Umbraco.Web;

namespace MyNamespace
{
    public class CustomGlobal : UmbracoApplication
    {
        private void application_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            var formatters = GlobalConfiguration.Configuration.Formatters;
            formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        }
    }
}
然后按如下所示更新您的global.asax,以指向您的
CustomGlobal

<%@ Application Inherits="MyCustomGlobal" Language="C#" %>

您可以创建自定义的global.asax.cs,如下所示:

using System;
using System.Net.Http.Headers;
using System.Web.Http;
using Umbraco.Web;

namespace MyNamespace
{
    public class CustomGlobal : UmbracoApplication
    {
        private void application_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            var formatters = GlobalConfiguration.Configuration.Formatters;
            formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        }
    }
}
然后按如下所示更新您的global.asax,以指向您的
CustomGlobal

<%@ Application Inherits="MyCustomGlobal" Language="C#" %>

我首先在sebastiaan看了一个类似的解决方案,但决定替代“ApplicationStarting”

以及WebApiConfig类:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
    }
}

我首先研究了一个类似的解决方案@sebastiaan,但决定替代“ApplicationStarting”

以及WebApiConfig类:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
    }
}

这种方法不好,因为它返回内容类型为
text/html
的JSON

请参见此处的答案和评论:

更好的解决方案是:

这种方法不好,因为它返回的JSON内容类型为
text/html

请参见此处的答案和评论:

更好的解决方案是:

您可以设置set
内容类型:'application/json'
accept:'application/json
以json而不是xml@Tinwor是的,我知道,但我希望在API“text/html”中默认获得json。您可以设置set
content type:'application/json'
accept:'application/json
以json而不是xml@Tinwor是的,我知道,但我希望在API“text/html”中默认获得json。