次の APIのIdentityServer4実装のチュートリアル に従っていますが、メソッドAddJsonFormatters()
からservices.AddMvcCore()
を呼び出すことができません。 ASP.NET Core 3.0.0で空のテンプレートからAPIを構成しています
結果なしでNuGetパッケージ_Microsoft.AspNetCore.Mvc.Formatters.Json
_を追加しました。また、AddMvc()
の代わりにAddMvcCore()
を使用すると部分的な解決策になることを理解していますが、AddAuthorization()
でAddMvc()
を使用できません
_//code extracted from the link
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters();
}
}
_
これは私が上記で見たエラーメッセージです:
「IMvcCoreBuilder」には「AddJsonFormatters」の定義が含まれておらず、タイプ「IMVCoreBuilder」の最初の引数を受け入れるアクセス可能な拡張メソッド「AddJsonFormatters」が見つかりませんでした(欠落しているディレクティブまたはアセンブリ参照を使用していますか?)
これは方法ですか? MVCCoreBuilderを送信する必要がありますか?それ、どうやったら出来るの? MvcJsonMvcCoreBuilderExtensions.AddJsonFormattersメソッド
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);
}
私が理解したように、.NET Core 3.0にはクラスMvcJsonMvcCoreBuilderExtensions
はまだありません。
最終的に私は-f
パラメータを作成したときApiプロジェクト:
dotnet new web -n Api -f netcoreapp2.2
の代わりに
dotnet new web -n Api
チュートリアルを読むことができるように、.NET Core 2.2のApiプロジェクトを作成します。