Je suis le suivant tutoriel de mise en œuvre IdentityServer4 pour API , mais je ne peux pas appeler la méthode AddJsonFormatters()
to services.AddMvcCore()
. Je configure actuellement l'API à partir d'un modèle vide dans ASP.NET Core 3.0.0
J'ai ajouté le package NuGet Microsoft.AspNetCore.Mvc.Formatters.Json
Sans résultat. De plus, je comprends que l'utilisation de AddMvc()
au lieu de AddMvcCore()
serait une solution partielle mais je ne peux pas utiliser AddAuthorization()
sur AddMvc()
//code extracted from the link
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters();
}
}
Voici le message d'erreur que je vois ci-dessus:
'IMvcCoreBuilder' ne contient pas de définition pour 'AddJsonFormatters' et aucune méthode d'extension accessible 'AddJsonFormatters' acceptant un premier argument de type 'IMVCoreBuilder' n'a pu être trouvée (utilisez-vous une directive manquante ou une référence d'assembly?)
Est-ce la méthode? Dois-je envoyer un MVCCoreBuilder? Comment je fais ça? Méthode MvcJsonMvcCoreBuilderExtensions.AddJsonFormatters
Lorsque vous appelez services.AddMvc()
vous obtenez un IMvcBuilder
.
si vous voulez ajouter plus de formateurs de sortie ou d'entrée, le IMvcBuilder
a une méthode d'extension que vous pouvez appeler AddMvcOptions
ci-dessous vous avez un exemple d'un XmlDataContractSerializerOutputFormatter
qui a été ajouté
mvcBuilder.AddMvcOptions(options =>
{
options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter(options));
Mvc a déjà un JsonOutputFormatter
, donc à l'intérieur du AddMvcOptions
vous pouvez l'obtenir et aussi et ajouter vos propres mediatypes personnalisés si vous en avez besoin.
var jsonOutputFormatter = options.OutputFormatters.OfType<JsonOutputFormatter>().FirstOrDefault();
if (jsonOutputFormatter != null)
{
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.Vnd+json.all);
jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.ApplicationOctetStream);
}
Si j'ai bien compris, il n'y a pas encore de classe MvcJsonMvcCoreBuilderExtensions
dans .NET Core 3.0.
Finalement, je viens d'ajouter -f
paramètre lors de la création du projet Api:
dotnet new web -n Api -f netcoreapp2.2
au lieu de
dotnet new web -n Api
Il crée le projet Api pour .NET Core 2.2 afin que vous puissiez lire le didacticiel.