Почему мои помощники тегов не разрешаются правильно? - PullRequest
1 голос
/ 24 января 2020

Так что у меня происходит интересная вещь. Я создаю новое приложение NET Core MVC и добавляю аутентификацию по умолчанию. Теперь сгенерированный _LoginPartial имеет следующую строку:

<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>

Но когда он отображается на странице, атрибут href выглядит так:

<a class="nav-link text-dark" href="/?area=Identity&amp;page=%2FAccount%2FLogin">Login</a>

Я действительно не уверен, почему это это происходит. Это также происходит с @ Url.Action, когда я пытаюсь добавить область. Я должен что-то упустить, но я абсолютно потерян.

РЕДАКТИРОВАТЬ:

Вот методы ConfigureServices и Configure.

public void ConfigureServices(IServiceCollection services)
    {

        services.AddIdentity<ApplicationUser, MongoIdentityRole>()
                .AddMongoDbStores<ApplicationUser, MongoIdentityRole, Guid>("mongodb://localhost:27017", "gw")
                .AddSignInManager()
                .AddDefaultTokenProviders();

        services.AddMvc()
            .AddRazorPagesOptions(options => {})
            .SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0);

        services.Configure<IdentityOptions>(options => {
            // Password settings.
            options.Password.RequireDigit = true;
            options.Password.RequireLowercase = true;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = true;
            options.Password.RequiredLength = 8;
            options.Password.RequiredUniqueChars = 1;

            // Lockout settings.
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            options.Lockout.MaxFailedAccessAttempts = 5;
            options.Lockout.AllowedForNewUsers = true;

            // User settings.
            options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
            options.User.RequireUniqueEmail = false;
        });

        services.ConfigureApplicationCookie(options => {
            // Cookie settings
            options.Cookie.HttpOnly = true;
            options.ExpireTimeSpan = TimeSpan.FromMinutes(5);

            options.LoginPath = "/Identity/Account/Login";
            options.AccessDeniedPath = "/Identity/Account/AccessDenied";
            options.SlidingExpiration = true;
        });



        // services.AddTransient<IEmailSender, AuthMessageSender>();
        // services.AddTransient<ISmsSender, AuthMessageSender>();
    }

    // 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.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();


        app.UseEndpoints(endpoints => {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
        });

    }

Ответы [ 3 ]

1 голос
/ 27 января 2020

Я не смог воспроизвести вашу проблему, но, исходя из этой проблемы , вы можете попытаться добавить .AddDefaultUI() в Startup.cs:

services.AddIdentity<ApplicationUser, MongoIdentityRole>()
            .AddMongoDbStores<ApplicationUser, MongoIdentityRole, Guid>("mongodb://localhost:27017", "gw")
            .AddSignInManager()
            .AddDefaultUI()
            .AddDefaultTokenProviders();
0 голосов
/ 24 января 2020

Если первый ответ не помогает, также убедитесь, что ваш DefaultIdentity также зарегистрирован:

services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<ApplicationDbContext>();
0 голосов
/ 24 января 2020

Скорее всего, маршрутизация конечной точки не настроена должным образом, MapRazorPages() также должен быть настроен:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...