C# 从Umbraco API控制器返回json作为默认值
正如标题所说,我希望返回json作为默认值,而不是XML。在普通的Web API中,我可以编辑App_Start/WebApiConfig.cs并添加以下行,但在Umbraco中找不到编辑配置的位置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,如下
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。您可以设置setcontent type:'application/json'
和accept:'application/json
以json而不是xml@Tinwor是的,我知道,但我希望在API“text/html”中默认获得json。