Ich habe Probleme mit Self-Hosting meiner Web-API in .NET Core. Es läuft gut auf IIS, aber ich bekomme Authentifizierungsfehler, wenn ich versuche, selbst zu hosten. Ich habe versucht, Cookie-Authentifizierung unter anderen Lösungen zu verwenden, aber vergeblich. Ich habe nur eine Route für den Moment, aber nachdem ich mehrere Haltepunkte gesetzt habe, ist mir aufgefallen, dass es nicht einmal den Konstruktor meines Controllers erreicht. Wenn jemand mir einen Hinweis auf eine Lösung geben könnte, würde ich es sehr schätzen :)Problem mit selbst-hosting Web-API mit .NET Core
Hier sind Ausschnitte meines Codes.
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));
});
}
Die config-Lamda in der ‚‘ services.AddMvc ‚‘ ist die einzige ich, dass gefunden gearbeitet, dass der Anrufer gezwungen, seine Windows-Anmeldeinformationen zu geben, die ich später analysieren und anzeigen Informationen basierend auf seinem Profil. Wenn dies nicht der richtige Weg ist, bitte sag es mir.
Und meine Controller-Klasse
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);
}
}
ist hier der Fehler i
erhalten