Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Razor页面更改ASP.NETCore2.1中的主页_C#_Asp.net Core_Asp.net Core 2.1_Razor Pages - Fatal编程技术网

C# 使用Razor页面更改ASP.NETCore2.1中的主页

C# 使用Razor页面更改ASP.NETCore2.1中的主页,c#,asp.net-core,asp.net-core-2.1,razor-pages,C#,Asp.net Core,Asp.net Core 2.1,Razor Pages,我在一个ASP.NETCore2.1网站上工作,这个网站有Razor页面,这是我第一次使用Razor页面。但我想做的是更改主页或登录页。因此,如果用户未登录,站点应重定向到Areas文件夹中的/Account/Login页面,但如果用户登录,则应转到pages文件夹中名为DataManagement的页面,如下所示 我已经缝好了标识,并在配置服务中尝试了如下操作: services.AddMvc().AddRazorPagesOptions(options => { option

我在一个ASP.NETCore2.1网站上工作,这个网站有Razor页面,这是我第一次使用Razor页面。但我想做的是更改主页或登录页。因此,如果用户未登录,站点应重定向到Areas文件夹中的/Account/Login页面,但如果用户登录,则应转到pages文件夹中名为DataManagement的页面,如下所示

我已经缝好了标识,并在配置服务中尝试了如下操作:

services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "");
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
在配置方法中:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
无济于事

编辑 我的StartUp.cs

公营创业 { 公共启动(IConfiguration配置) { 配置=配置; }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("Connection")));
        services.AddIdentity<ApplicationUser, ApplicationRole>(
            options => options.Stores.MaxLengthForKeys = 128)
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultUI()
            .AddDefaultTokenProviders()
            .AddEntityFrameworkStores<ApplicationDbContext>();


        services.AddMvc().AddRazorPagesOptions(opts =>
        {
            opts.Conventions.AddPageRoute("/DataManagement", "/");
            opts.Conventions.AddPageRoute("/DataManagement", "home");
            opts.Conventions.AddPageRoute("/DataManagement", "index");

        }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ApplicationDbContext context, RoleManager<ApplicationRole> roleManager, UserManager<ApplicationUser> userManager, IServiceProvider serviceProvider)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseAuthentication();

        app.UseMvc();

    }
公共IConfiguration配置{get;}
//此方法由运行时调用。请使用此方法将服务添加到容器中。
public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“连接”);
服务附加性(
选项=>options.Stores.MaxLengthForKeys=128)
.AddEntityFrameworkStores()
.AddDefaultUI()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores();
services.AddMvc().AddRazorPagesOptions(opts=>
{
opts.Conventions.AddPageRoute(“/DataManagement”、“/”);
opts.Conventions.AddPageRoute(“/DataManagement”,“home”);
opts.Conventions.AddPageRoute(“/DataManagement”,“index”);
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
public void Configure(IApplicationBuilder应用程序、IHostingEnvironment环境、ApplicationDbContext上下文、角色管理器角色管理器、用户管理器用户管理器、IServiceProvider服务提供商)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
其他的
{
app.UseExceptionHandler(“/Error”);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc();
}

最简单的方法就是在
DataManagement.cshtml.cs
文件上使用
[Authorize]
属性

[Authorize]
public class DataManagementModel : PageModel
{
    public void OnGet()
    {

    }
}
只需像往常一样在
Startup.cs
中配置默认主页:

services.AddMvc().AddRazorPagesOptions(opts =>
{
    opts.Conventions.AddPageRoute("/DataManagement", "/");
    opts.Conventions.AddPageRoute("/DataManagement", "home");
    opts.Conventions.AddPageRoute("/DataManagement", "index");
    opts.Conventions.AddAreaPageRoute("Account", "/Login", "/Account/Login");

}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

services.ConfigureApplicationCookie(options =>
{
    options.LoginPath = $"/Account/Login";
});
在配置中:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
               name: "default",
               template: "{controller=Home}/{action=Index}/{id?}");

        });
然后删除Index.cshtml


我认为在这种情况下,您需要如上所述定义自定义登录,从

中获取,您应该更改路由配置。您的模板配置为如果在路由中未指定控制器名称,则默认控制器为Home,如果在路由中未指定操作,则默认操作为Index。您有两个选项来处理此问题。第一个选项是更改默认值控制器或索引或更改重定向路由。嘿@Baris,你能给我一个URL或示例吗?这么快的问题,我实际上有两个页面。如果用户登录,这个数据管理页面将是默认页面,并且“/帐户/登录”页面如果用户未登录,将是默认页面,我如何处理登录页面?因为您需要设置Auth?创建一个带有Razor页面和个人用户帐户的默认Web应用程序,以查看此示例。或参见此处:上面的Hi对我有效-您能确认吗。只需确保
login.cshtml
位于
Pages
中即可>
账户
区域中的文件夹。好的,我找到了这笔交易。它分为两部分。我重新添加了配置:好的,很好,一切正常?-如果是,请您标记为已回答:)