je ne parviens pas à l'auto-hébergement de mon API Web dans .NET de base. Il fonctionne bien sur IIS mais j'obtiens des erreurs d'authentification lorsque j'essaie d'auto-héberger. J'ai essayé d'utiliser l'authentification de cookie parmi d'autres solutions mais en vain. Je n'ai que 1 route pour le moment mais après avoir mis plusieurs points d'arrêt j'ai remarqué qu'il n'atteint même pas le constructeur de mon controlelr. Si quelqu'un pouvait me donner une idée d'une solution, je serais très heureux :)Trouble with API web auto-hébergement avec .NET de base
Voici quelques extraits de mon code.
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseApplicationInsightsRequestTelemetry();
app.UseApplicationInsightsExceptionTelemetry();
app.UseMvc();
}
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(this.Configuration);
// Add the database used
services.AddDbContext<VaultContext>(options => options.UseSqlServer(this.Configuration.GetConnectionString("VaultDatabase")));
// Add our repository type
services.AddScoped<VaultRepository, VaultRepository>();
services.AddScoped<UserResolverService, UserResolverService>();
services.AddScoped<PersonalizationServiceClient, PersonalizationServiceClient>();
services.AddScoped<PersistenceToDataModelConverter, PersistenceToDataModelConverter>();
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
}
Le lamda config dans le « » services.AddMvc « » est le seul que j'ai trouvé qui a travaillé qui a forcé l'appelant à donner ses lettres de créance de Windows que je vais analyser et afficher plus tard informations basées sur son profil. Si ce n'est pas la bonne façon de le faire, dites-le moi s'il vous plaît.
Et ma classe contrôleur
public VaultController(VaultRepository repository, UserResolverService currentuser, PersonalizationServiceClient personalizationService, PersistenceToDataModelConverter persistenceToDataModelConverter)
{
this.repository = repository;
this.currentuser = currentuser;
this.personalizationService = personalizationService;
this.persistenceToDataModelConverter = persistenceToDataModelConverter;
}
/// <summary>
/// The get profile.
/// </summary>
/// <returns>
/// The <see cref="IActionResult"/>.
/// </returns>
[HttpGet]
[Route("/Profile")]
[Produces(typeof(UserProfile))]
public IActionResult SearchProfile()
{
try
{
if (!this.currentuser.IsAuthenticated)
{
throw new Exception("This service does not support anonymous calls.");
}
var profile = Task.Run(() => this.personalizationService.GetUserProfileAsync(this.currentuser.GetCurrentWindowsIdentityName)).Result;
var userProfile = this.persistenceToDataModelConverter.Convert(profile);
userProfile.UserAdLogin = this.currentuser.GetCurrentWindowsIdentityName;
return this.Ok(userProfile);
}
catch (Exception ex)
{
return this.NotFound(ex);
}
}
Voici l'erreur que je reçois