I created an empty asp.net core web application (dotnet new web -n <projectname>
) and went to the github for IdentityServer4.Quickstart.UI and was followed the instructions to add the quickstart UI. I first did the powershell cmd iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/IdentityServer/IdentityServer4.Quickstart.UI/main/getmain.ps1'))
to download the files and run the application but it keeps telling me Index not found
but the file is inside of the Views
folder. So I then deleted all those files it downloaded from the project and installed it using its templates by running the cmds dotnet new -i identityserver4.templates
then dotnet new is4ui --force
which downloaded those files again onto my project. However, it keeps telling me the same message.
I noticed that under the Quickstart
folder, contains a folder named Home
which has the HomeController.cs
and the namespace is as IdentityServerHost.Quickstart.UI
... do I need to change that namespace to match my solution i.e. ids.Quickstart.Home
?
What is causing this to display that error when infact there is the Index.cshtml file inside of the Views folder?**
This is my startup.cs
file:
namespace ids
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddInMemoryClients(Config.Clients)
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddInMemoryApiResources(Config.ApiResources)
.AddInMemoryApiScopes(Config.ApiScopes)
.AddTestUsers(Config.Users)
.AddDeveloperSigningCredential();
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseStaticFiles();
app.UseIdentityServer();
app.UseAuthorization();
// app.UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute());
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
Here is the Index.cshtml
Try changing your app.UseEndpoints( endpoints => ...)
line, in your Configure()
method to the following:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Then, make sure you have a HomeController
. Create a folder in your project named Controllers
. The path should be ~/Controllers/{ControllerName}.cs
while your views should be ~/Views/Home/{ViewName}.cshtml
. In this case, Your {ViewName}.cshtml
will be Index.cshtml
and your controller name will be HomeController.cs
.
public class HomeController : Controller
{
[HttpGet]
// Default return when user performs GET HTTP request
public IActionResult Index()
{
return View();
}
}