首页 > 解决方案 > .NET Core App 3.1“未找到“登录”视图。”

问题描述

我将 IdentityServer4 快速启动视图复制到我的项目中,我可以确认代码在 AccountController 中中断。

但是,我一生都无法弄清楚我们如何解决这个问题The view 'Login' was not found. Searched locations: /Views/Account/Login.cshtml, /Views/Shared/Login.cshtml

这是我从https://github.com/IdentityServer/IdentityServer4.Quickstart.UI复制文件夹的快速入门

public class Program
    {
        public static int Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .WriteTo.Console()
                .CreateLogger();

            IdentityModelEventSource.ShowPII = true;

            try
            {
                Log.Information("Starting host...");
                CreateWebHostBuilder(args).Build().Run();
                return 0;
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly.");
                return 1;
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseUrls("http://localhost:4000");
    }
public class Startup
    {
        public IWebHostEnvironment Environment { get; }
        public IConfiguration Configuration { get; }

        public Startup(IWebHostEnvironment environment, IConfiguration configuration)
        {
            Environment = environment;
            Configuration = configuration;
        }

        public void ConfigureServices(IServiceCollection services)
        {
            // https://github.com/IdentityServer/IdentityServer4.Quickstart.UI#quickstart-ui-for-identityserver4
            services.AddControllersWithViews();

            var builder = services.AddIdentityServer(options =>
                {
                    options.Events.RaiseErrorEvents = true;
                    options.Events.RaiseInformationEvents = true;
                    options.Events.RaiseFailureEvents = true;
                    options.Events.RaiseSuccessEvents = true;

                    // see https://identityserver4.readthedocs.io/en/latest/topics/resources.html
                    options.EmitStaticAudienceClaim = true;
                })
                .AddInMemoryClients(Config.Clients)
                .AddInMemoryIdentityResources(Config.IdentityResources)
                //.AddInMemoryApiResources(new List<ApiResource>())
                .AddInMemoryApiScopes(Config.ApiScopes)
                .AddTestUsers(TestUsers.Users)
                .AddDeveloperSigningCredential();
        }

        public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseDeveloperExceptionPage();
            
            app.UseStaticFiles();
            app.UseRouting();

            app.UseIdentityServer();
            app.UseAuthorization();

            app.UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute());
        }
    }

项目结构

在此处输入图像描述

例外在此处输入图像描述

请注意,我缺少调试中的文件。但我已经更新了我的 csproj,现在他们在那里

在此处输入图像描述

标签: c#asp.net-core.net-coreidentityserver4asp.net-core-3.1

解决方案


所以这似乎有效

我需要将此添加到我的 csproj

<ItemGroup>
    <Content Include="appsettings.json" CopyToOutputDirectory="Always" />
    <Content Include="Views\**\*" CopyToOutputDirectory="Always" />
    <Content Include="wwwroot\**\*" CopyToOutputDirectory="Always" />
</ItemGroup>

我还必须更新我的 Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddControllersWithViews()
        .AddRazorRuntimeCompilation();
   
    ....
}

参考解决方案 https://blog.elmah.io/add-razor-runtime-compilation-when-developing-asp-net-core/

需要注意的地方 在此处输入图像描述


推荐阅读