Приложение .NET Core 3.1 «Представление «Вход» не найдено».

#c# #asp.net-core #.net-core #identityserver4 #asp.net-core-3.1

#c# #asp.net-core #.net-core #identityserver4 #asp.net-core-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());
        }
    }
  

Структура проекта

введите описание изображения здесь

Исключение введите описание изображения здесь

Обратите внимание, что мне не хватало файлов в Debug. Но я обновил свой csproj, и теперь они там

введите описание изображения здесь

Комментарии:

1. Попробуйте создать Views папку внутри папки `Quickstart`

2. Изменение файла проекта, как вы это делали, не требуется?

Ответ №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 /

Что-то отметить введите описание изображения здесь