c# - .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,现在他们在那里
解决方案
所以这似乎有效
我需要将此添加到我的 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/
推荐阅读
- c++ - 已初始化与未初始化的全局变量,存储在 RAM 的哪一部分?
- magento - Magento 2 从类别中排除特定产品折扣
- django-rest-framework - 在 Django Rest 框架中添加多个用户
- c++ - 如何为数字系统输出运算符参数化 C++ 模板?
- vba - Word 中的 DOCVARIABLES 未初始化
- angular - Darken Angular Material 深色主题
- amazon-web-services - 如何在我的 AWS 中读取账户基础设施
- android - ¿ 如何修复 android studio 中的侧边菜单功能?
- javascript - 如何在不重新编译的情况下更改包含文件的内容?
- go - 如何获取时间戳的毫秒值