如何配置 Web API .Net 核心以接受二进制 JSON?
How do I configure Web API .Net core to accept Binary JSON?
在网络中API 2.1 我使用以下方式注册 BSON:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.Add(new BsonMediaTypeFormatter());
}
}
我不确定如何注册格式化程序 .Net Core Web API。它似乎肯定会在 Startup.Configuration 中,但我对 Core 还是很陌生,不确定如何添加这种类型的格式化程序。
在 startup.cs 中看起来像这样,mvc 配置应该是这样的。
using WebApiContrib.Core.Formatter.Bson;
namespace MyApp
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddBsonSerializerFormatters();
}
}
}
对于任何使用 .NET Core 并通过 AddMvcCore() 使用 Mvc 的最小服务的人,AddBsonSerializerFormatters() 不会出现。我检查了GitHub上的项目(github.com/WebApiContrib/WebAPIContrib.Core)。只有为 IMvcBuilder 和 none 为 IMvcCoreBuilder 编写的扩展。作为解决方法,我编写了自己的扩展方法。希望对大家有帮助。
BuilderExtensions.cs:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using System;
using WebApiContrib.Core.Formatter.Bson;
namespace ApiGateway.Extensions
{
public static class BuilderExtensions
{
public static IMvcCoreBuilder AddBsonSerializerFormatters(this IMvcCoreBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}
builder.Services.TryAddEnumerable(
ServiceDescriptor.Transient<IConfigureOptions<MvcOptions>, MvcBsonSerializerOptionsSetup>());
return builder;
}
}
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// ...
// example usage
services.AddMvcCore()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddJsonFormatters().AddBsonSerializerFormatters()
.AddApiExplorer();
// ...
}
在网络中API 2.1 我使用以下方式注册 BSON:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.Add(new BsonMediaTypeFormatter());
}
}
我不确定如何注册格式化程序 .Net Core Web API。它似乎肯定会在 Startup.Configuration 中,但我对 Core 还是很陌生,不确定如何添加这种类型的格式化程序。
在 startup.cs 中看起来像这样,mvc 配置应该是这样的。
using WebApiContrib.Core.Formatter.Bson;
namespace MyApp
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddBsonSerializerFormatters();
}
}
}
对于任何使用 .NET Core 并通过 AddMvcCore() 使用 Mvc 的最小服务的人,AddBsonSerializerFormatters() 不会出现。我检查了GitHub上的项目(github.com/WebApiContrib/WebAPIContrib.Core)。只有为 IMvcBuilder 和 none 为 IMvcCoreBuilder 编写的扩展。作为解决方法,我编写了自己的扩展方法。希望对大家有帮助。
BuilderExtensions.cs:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using System;
using WebApiContrib.Core.Formatter.Bson;
namespace ApiGateway.Extensions
{
public static class BuilderExtensions
{
public static IMvcCoreBuilder AddBsonSerializerFormatters(this IMvcCoreBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}
builder.Services.TryAddEnumerable(
ServiceDescriptor.Transient<IConfigureOptions<MvcOptions>, MvcBsonSerializerOptionsSetup>());
return builder;
}
}
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// ...
// example usage
services.AddMvcCore()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddJsonFormatters().AddBsonSerializerFormatters()
.AddApiExplorer();
// ...
}