Return json 作为 Umbraco 的默认值 API 控制器
Return json as default from Umbraco API Controller
正如标题所说,我想 return json 作为默认值而不是 XML。在普通 Web API 中,我可以编辑 App_Start/WebApiConfig.cs 并添加以下行,但我找不到在 Umbraco 中编辑配置的位置。
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
我不希望我的方法 return 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
class
<%@ Application Inherits="MyCustomGlobal" Language="C#" %>
我首先查看了类似的解决方案@sebastiaan,但决定改写 "ApplicationStarting"。
public class CustomApplicationEventHandler : ApplicationEventHandler
{
protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
和 WebApiConfig class:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
这种方法不好,因为它 returns JSON 的 Content-Type
为 text/html
。
在此处查看答案和评论:
更好的解决方案是:
正如标题所说,我想 return json 作为默认值而不是 XML。在普通 Web API 中,我可以编辑 App_Start/WebApiConfig.cs 并添加以下行,但我找不到在 Umbraco 中编辑配置的位置。
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
我不希望我的方法 return 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
class
<%@ Application Inherits="MyCustomGlobal" Language="C#" %>
我首先查看了类似的解决方案@sebastiaan,但决定改写 "ApplicationStarting"。
public class CustomApplicationEventHandler : ApplicationEventHandler
{
protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
和 WebApiConfig class:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
这种方法不好,因为它 returns JSON 的 Content-Type
为 text/html
。
在此处查看答案和评论:
更好的解决方案是: