C# 如何将Json格式化程序添加到MvcCore?
我正在执行下一个操作,但是我无法将方法C# 如何将Json格式化程序添加到MvcCore?,c#,asp.net-core,identityserver4,C#,Asp.net Core,Identityserver4,我正在执行下一个操作,但是我无法将方法AddJsonFormatters()调用到services.AddMvcCore()。 我目前正在从ASP.NET Core 3.0.0中的空模板配置API 我添加了NuGet包Microsoft.AspNetCore.Mvc.Formatters.Json,但没有结果。 另外,我知道使用AddMvc()而不是AddMvcCore()将是部分解决方案,但我不能在AddMvc()上使用AddAuthorization() 这是我在上面看到的错误消息: “IM
AddJsonFormatters()
调用到services.AddMvcCore()
。
我目前正在从ASP.NET Core 3.0.0中的空模板配置API
我添加了NuGet包Microsoft.AspNetCore.Mvc.Formatters.Json
,但没有结果。
另外,我知道使用AddMvc()
而不是AddMvcCore()
将是部分解决方案,但我不能在AddMvc()上使用AddAuthorization()
这是我在上面看到的错误消息:
“IMvcCoreBuilder”不包含的定义
“AddJsonFormatters”和无可访问的扩展方法
“AddJsonFormatters”接受类型为的第一个参数
可以找到“IMVCoreBuilder”(您是否使用缺少的指令或
组件参考?)
这就是方法吗?我应该发送MVC重建器吗?我该怎么做 当您调用services.AddMvc()
时,您会得到一个IMvcBuilder
如果要添加更多输出或输入格式化程序,IMvcBuilder
有一个扩展方法,您可以调用该扩展方法AddMvcOptions
下面是添加的XmlDataContractSerializerOutputFormatter
示例
mvcBuilder.AddMvcOptions(options =>
{
options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter(options));
Mvc已经有了一个JsonOutputFormatter
,所以在AddMvcOptions
中,您可以获得它,如果需要,还可以添加自己的自定义媒体类型
var jsonOutputFormatter = options.OutputFormatters.OfType<JsonOutputFormatter>().FirstOrDefault();
if (jsonOutputFormatter != null)
{
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.Vnd+json.all);
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.ApplicationOctetStream);
}
var jsonOutputFormatter=options.OutputFormatters.OfType().FirstOrDefault();
if(jsonOutputFormatter!=null)
{
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.Vnd+json.all);
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.ApplicationActeTStream);
}
据我所知,在.NET Core 3.0中还没有类MVCJSONMVCREBUILDEExtensions
最终,在创建Api项目时,我添加了-f
参数:
dotnet new web -n Api -f netcoreapp2.2
而不是
dotnet new web -n Api
它为.NET Core 2.2创建了Api项目,因此您可以阅读教程。我也遇到了同样的问题。我发现用当前版本的dotnetcore实现它的教程是错误的。阿诺扎肯的评论有助于:
再次检查教程,它已更新为NetCore3
查看教程页面上侧边栏的顶部。如果在IdentityServer4标题下显示“Release”,则该选项无效
侧边栏底部有一个下拉列表,您可以在其中选择“3.1”。使用此选项:
If MVC
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver());
.....
.....
如果是API,请不要使用
services.AddControllersWithViews().AddNewton ......
是的,我从pc上删除了sdk高于2.2的版本,这样它就可以用2.2构建一个新的dotnet新web
project再次查看教程,它已经更新为NetCore3。简而言之,您不再需要AddJsonFormatters()
,只需将其删除即可。
services.AddControllersWithViews().AddNewton ......