繁体   English   中英

如何重现 ASP.NET Core 6 约定(配置路由后)

[英]How to reproduce ASP.NET Core 6 conventions (post configure route)

文档包含一些不清楚且与最终结果描述有关的约定https://docs.microsoft.com/en-us/aspnet/core/razor-pages/razor-pages-conventions?view=aspnetcore-6.0#page-route-行动约定

我不明白如何使用此文档来重现所需的结果。

目前我有这些路线规则:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2 GET https://localhost:7168/?area=Identity&page=%2FAccount%2FLogin - -
Endpoint: FrontEnd.Controllers.HomeController.Index (FrontEndCode) RoutePattern: {controller=Home}/{action=Index}/{id?}  
Endpoint Metadata 0: Microsoft.AspNetCore.Mvc.ControllerAttribute
Endpoint Metadata 1: Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor
Endpoint Metadata 2: Microsoft.AspNetCore.Routing.DataTokensMetadata
Endpoint Metadata 3: Microsoft.AspNetCore.Routing.RouteNameMetadata
Endpoint Metadata 4: Microsoft.AspNetCore.Mvc.Filters.ControllerActionFilter
Endpoint Metadata 5: Microsoft.AspNetCore.Mvc.ViewFeatures.SaveTempDataAttribute
Endpoint Metadata 6: Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter
Endpoint Metadata 7: Microsoft.AspNetCore.Routing.SuppressLinkGenerationMetadata

我想得到这些规则:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2 GET https://localhost:7167/Identity/Account/Login - -
Endpoint: /Account/Login
RoutePattern: Identity/Account/Login
Endpoint Metadata 0: Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute
Endpoint Metadata 1: Microsoft.AspNetCore.Identity.UI.IdentityDefaultUIAttribute
Endpoint Metadata 2: Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageModelAttribute
Endpoint Metadata 3:  Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute
Endpoint Metadata 4: System.Runtime.CompilerServices.CreateNewOnMetadataUpdateAttribute
Endpoint Metadata 5: Microsoft.AspNetCore.Mvc.ApplicationModels.PageRouteMetadata
Endpoint Metadata 6: Microsoft.AspNetCore.Mvc.RazorPages.CompiledPageActionDescriptor
Endpoint Metadata 7: Microsoft.AspNetCore.Routing.RouteNameMetadata
Endpoint Metadata 8: Microsoft.AspNetCore.Mvc.Filters.PageHandlerPageFilter
Endpoint Metadata 9: Microsoft.AspNetCore.Mvc.ViewFeatures.SaveTempDataAttribute
Endpoint Metadata 10: Microsoft.AspNetCore.Mvc.ModelBinding.UnsupportedContentTypeFilter
Endpoint Metadata 11: Microsoft.AspNetCore.Mvc.Filters.PageSaveTempDataPropertyFilterFactory
Endpoint Metadata 12: Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.HandleOptionsRequestsPageFilter
Endpoint Metadata 13: Microsoft.AspNetCore.Mvc.AutoValidateAntiforgeryTokenAttribute

Microsoft.AspNetCore.Routing.EndpointMiddleware:信息:执行端点'/Account/Login'

分析选项后,我了解到此规则是通过两个 PostConfigure 约定规则添加的

PostConfigure 约定

如何为约定编写操作以接收 6 个额外的所需属性? 如何编写PostConfigure操作?

我已经下载了有关约定https://github.com/dotnet/AspNetCore.Docs/tree/main/aspnetcore/razor-pages/razor-pages-conventions/samples/6.x/SampleApp的 MS 示例,但我看不到任何回答有关公约行动的实际实际问题。 此外,MS 将约定 class 设为私有,没有人可以打印或分析动作,动作写成 lambda 表达式,也不清楚。 我已经更改了可行项目的代码,并且我的项目意外丢失了 6 个路由属性以及PostConfigure约定规则中的这两个操作。 我不明白如何重现这两个动作,如何添加 6 个路由属性。

我在 MS 源代码中找到了 PostConfigure 约定。

IdentityDefaultUIConfigureOptions

所以,如果你想添加 13 个属性和 PostConfigure 约定,你需要类似的东西

 Builder.Services.
 AddIdentity(Of ApplicationUser, ApplcationRole).
 AddDefaultUI().
 AddDefaultTokenProviders().
 AddUserStore(Of CustomUserStore).
 AddRoleStore(Of CustomRoleStore)() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM