#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 /