将身份添加到项目后,控制器没有被命中

问题描述 投票:0回答:1

在之前的帖子中我认为我没有很好地解释问题,所以我会从头开始再尝试。

  1. 我开发简单的网络应用程序。我尝试使用脚手架选项为其添加身份Setting of add identity operation

  2. 之后我尝试运行我的应用程序。它不起作用。我收到 System.AggregateException 消息,指出无法构造我的 UnitOfWork 类。它还包括两个内部异常,即程序在验证 IUnitOfWork 服务时失败,第二个异常是无法解析 ApplicationDbContext。 整个异常消息在这里: exceptions messages

  3. 我发现我在program.cs 的AddDBContext 和AddDefaultIdentity 方法中收到了一条警告消息。 warnigs

  4. 事实证明,添加操作创建了额外的 dbContext,其命名空间与我在设置中提供的命名空间相同。新的 dbContext 在 Areas/Identity/Data/ApplicationDbContext.cs 下创建

我在添加操作中提供的dbContext主体:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace BulkyBook.DataAccess;

public class ApplicationDbContext : IdentityDbContext
{
     public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
     {}

     public DbSet<Category> Categories { get; set; }
     public DbSet<CoverType> CoverTypes { get; set; }
     public DbSet<Product> Products { get; set; }
}

由identity创建的dbContext的主体:

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace BulkyBook.DataAccess;

public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
     public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
     {}

     protected override void OnModelCreating(ModelBuilder builder)
     {
         base.OnModelCreating(builder);
         // Customize the ASP.NET Identity model and override the defaults if needed.
         // For example, you can rename the ASP.NET Identity table names and more.
         // Add your customizations after calling base.OnModelCreating(builder);
     }
}
  1. 首先我尝试更改新创建的 dbContext 的命名空间。它解决了警告并且应用程序开始编译,但编译后它不会点击主控制器而是显示 blank browser page

  2. 然后我尝试删除新的dbContext,但结果完全一样。

  3. 然后我尝试删除所有文件并再次添加身份,但这又让我再次进入步骤3。

如果您想查看其他文件,我将在下面粘贴我的program.cs 文件和github 存储库链接。 program.cs https://github.com/WojciechLarecki/BulkyBook

感谢您提前提供的帮助。

附注应用程序基于MVC框架和.net 6平台。 P.S.2 提供给脚手架选项的 DbContext 位于不同的项目(代码库)中,然后是我要添加身份的项目(mvc 项目)。项目的整个结构可见here或在存储库中

c# asp.net-core asp.net-identity
1个回答
0
投票

首先我尝试更改新创建的 dbContext 的命名空间。它 解决了警告并且应用程序开始编译,但是之后 编译它不会击中主控制器而是显示空白 浏览器页面

控制器没有被击中,在我的测试中显示空白浏览器页面是因为 404 错误。

尝试添加

[Area]
属性将控制器与区域关联起来,例如:

[Area("Customer")]
public class HomeController : Controller
{}

与Category文件夹中的其他控制器相同,也要添加

[Area]
属性。您可以阅读具有视图的控制器区域了解更多信息。

此外,尝试添加以下代码来配置 Razor Pages 的端点路由,显示身份 Razor 页面

builder.Services.AddRazorPages();
...
app.MapRazorPages();

您可以阅读 Razor Pages 的 Program.cs 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.