在Web 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的新手,不知道如何添加这种类型的格式化程序。
答案 0 :(得分:5)
看起来在startup.cs中,mvc配置看起来应该是这样的。
using WebApiContrib.Core.Formatter.Bson;
namespace MyApp
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddBsonSerializerFormatters();
}
}
}
答案 1 :(得分:0)
对于使用.NET Core并使用带有AddMvcCore()的Mvc最小服务的任何人,都不会显示AddBsonSerializerFormatters()。我在GitHub(github.com/WebApiContrib/WebAPIContrib.Core)上检查了项目。只有为IMvcBuilder编写的扩展名,而没有为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();
// ...
}