注册 Authentication 的代码如下
services.AddAuthentication(CnblogsAuthenticationDefaults.AuthenticationScheme)
.AddCookie(
options =>
{
options.Cookie.Domain = "." + Constants.DefaultDomain;
});
在 Web 项目中注册了,想在集成测试中再次注册以修改 options.Cookie.Domain 的设置
services.AddAuthentication(CnblogsAuthenticationDefaults.AuthenticationScheme)
.AddCookie(
options =>
{
options.Cookie.Domain = "localhost"
});
会报错
System.InvalidOperationException : Scheme already exists: Cookies
请问如何解决?
参考 ASP.NET Core 的源码通过下面的代码解决了
var options = services.BuildServiceProvider().GetService<Options.IOptions<AuthenticationOptions>>();
if (options?.Value.SchemeMap.ContainsKey(CookieAuthenticationDefaults.AuthenticationScheme) == true)
{
return new AuthenticationBuilder(services);
}
上面的异常是在 AuthenticationOptions.cs#L42 处抛出的
– dudu 1年前