- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
知道为什么我会收到此错误吗?错误消息 -->“IServiceCollection 不包含 AddDefaultIdentity 的定义”
我正在从 .NET Core v1.1 迁移到 v3.1
public class Program
{
public async static void Main(string[] args)
{
await Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseKestrel();
webBuilder.UseAzureAppServices();
webBuilder.UseStartup<Startup>();
})
.Build()
.RunAsync();
}
}
public class Startup
{
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)
{
Configuration = configuration;
HostEnvironment = hostEnvironment;
}
public IConfiguration Configuration { get; }
protected IApplicationBuilder ApplicationBuilder { get; private set; }
public IHostEnvironment HostEnvironment { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// services.AddRazorPages();
services.AddDefaultIdentity<ApplicationUser>() // "ApplicationUser" is named incorrectly, it should be "IdentityUser" instead, as per Microsoft documentation.
.AddRoles<IdentityRole<Guid>>()
.AddEntityFrameworkStores<ApplicationContext, Guid>() // FYI - AddEntityFrameworkStores() deal with role that derives from IdentityRole, as per documentation.
//.AddDefaultUI()
.AddDefaultTokenProviders();
// [ Old version #1 - replacement ]
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = new PathString("/Home/Index");
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(this.Configuration.GetValue<int?>("Authentication:SlidingExpirationTime").Value);
options.AccessDeniedPath = new PathString("/Home/AccessDenied");
});
// [ Old version #2 - replacement ]
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireUppercase = false;
options.Password.RequireLowercase = false;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireDigit = false;
options.Password.RequiredLength = 7;
});
services.AddMvc();
services.AddSession();
//services.Configure<AuthorizationOptions>(options =>
//{
//});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
// Config Exception.
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseExceptionHandler("/Home/ErrorPage.html");
app.UseStaticFiles(); // Note, we are not authenticating for static files if this is before them
app.UseSession();
app.UseAuthentication();
// MVC.
// app.UseMvc(routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"));
}
}
public class ApplicationUser : IdentityUser<Guid>, IUser
{
}
public interface IUser
{
}
public class ApplicationContext : IdentityDbContext<ApplicationUser, IdentityRole<Guid>, Guid>
{
public ApplicationContext(DbContextOptions<ApplicationContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="1.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="3.1.3" />
<PackgaeReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="1.0.2" />
</ItemGroup>
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole<Guid>>()
.AddEntityFrameworkStores<ApplicationContext, Guid>()
.AddDefaultTokenProviders();
最佳答案
您需要添加对 Microsoft.AspNetCore.Identity.UI nuget package 的引用。为了使用AddDefaultIdentity
.但是如果您不想迁移到 Identity Razor 类库,我认为您仍然可以使用 .AddIdentity<ApplicationUser, IdentityRole>()
在核心 3.1 中。如果您确实想迁移到 RCL,从 2.0 到 2.1 的迁移文档可能是一个不错的起点:
https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-3.1#changes-to-authentication-code
--- 编辑---
我已经将一些站点从 1.1 迁移到 3.1,我发现最简单的方法是这样的:
关于asp.net-core - IServiceCollection 不包含 AddDefaultIdentity 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61619369/
看完this帖子我可以理解 AddTransient、AddScoped 和 AddSingleton 之间的区别,但是,我看不到它们每个的实际用法。 我的理解是 添加 transient 每次客户端
假设我有某种子应用程序需要在主应用程序中注册一些服务以及它自己的一些特定服务。我想知道是否有更好/自然的方法来执行此操作(也许是某种扩展方法?)。这就是我所做的: public static ISer
我有一个单例服务,我想在启动时运行,而不是等待一些 Controller 通过依赖注入(inject)构建服务。 该服务处理来自服务总线的数据,它似乎并不完全依赖于客户端流量。最干净的初始化方法是什么
我正在创建辅助类以通过库的 IServiceCollection 简化接口(interface)的配置和注入(inject)。 libraries 构造函数包含许多可能早先注入(inject)的依赖项
我有一个接受三个构造函数参数的类。在我的作文根目录中,我只想定义/覆盖 一个 三个构造函数参数中的一个;其他两个依赖项已经映射到我的 DI 容器中,应该从 IServiceProvider 创建。 使
尝试在 Visual Studio 2015 中构建 ReactJS.NET using Microsoft.AspNetCore.Http; using JavaScriptEngineSwitch
我有这个扩展 public static class ServiceCollectionExtensions { public static IServiceCollection MyExte
我在 IServiceCollection 上有一个扩展方法,如下所示: public static IServiceCollection AddMyProjData(this IServiceCol
我在全新的 .net core 2 网络应用程序中发生了一件奇怪的事情。这是来自 Visual Studio 内置模板的标准 Web API。 VS 2017,所有的爵士乐。这是整个 startup.
我正在尝试找出最简单的方法来测试我的框架的服务注册方法。我正在创建动态服务,我的注册看起来像这样: var messageHubConfig = new DynamicHubServiceConfig
我正在尝试在我的 asp core 2.0 项目中使用 Quartz sheduker。我使用 nuget 下载了 Quartz 3.0.4,然后我添加了 services.AddQuartz(new
这个问题在这里已经有了答案: Trying to add AutoMapper to .NetCore1.1 - not recognising services.AddAutoMapper() (1
我有一个 ASP.NET Core 3.0 项目在以下启动时运行良好: public void ConfigureServices(IServiceCollection services) {
我正在尝试添加 Blob 服务客户端以进行依赖项注入(inject)。我正在使用最新版本的 Microsoft.Extensions.Azure,但是我的服务集合不包含 AddAzureClients
我不明白为什么 Startup.cs 会抛出此错误。我尝试了建议的解决方案 here (包括重新启动我的机器并运行 dotnet Restore)但运气不佳。有什么想法吗? CS1061 'IServ
我正在尝试添加 Blob 服务客户端以进行依赖项注入(inject)。我正在使用最新版本的 Microsoft.Extensions.Azure,但是我的服务集合不包含 AddAzureClients
我正在使用 ASP.NET Core 3、.NET Core 3.0.100、Visual Studio 2019 Community。我遵循本指南 https://learn.microsoft.c
考虑以下简单的 appsettings.json: { "maintenanceMode": true } 它加载在我的 Startup.cs/Configure(...) 方法中 public
当我尝试在 visual studio 2015 中构建项目时,我在 ConfigureServices 方法中遇到了问题。 最佳答案 检查您尝试使用的 asp.net-mvc 版本。看起来您正在混合
我将 API 配置分为两个项目(主要项目和次要项目)。在主体 Startup.cs 中,我配置了 Autofac,在辅助中,我使用了主体返回的 IServiceCollection。 要注册一个 Au
我是一名优秀的程序员,十分优秀!