我需要一个多语言的网络应用程序。我在 .net core 2.2 中使用我的代码,一切都很好。当我迁移到 .net core 3 时,我遇到了其中一个使用 UseRequestLocalization 的一些问题。
我在 startups.cs 的 Configure 方法中使用此代码,在运行项目后,我看到一个空白页面。
var supportedCultures = new CultureInfo[] {
new CultureInfo ("en-US"),
new CultureInfo ("en"),
GetPersianCulture ("fa-IR"),
GetPersianCulture ("fa"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("fa"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures,
});
Run Code Online (Sandbox Code Playgroud) 我已将 dotnet core 2.2 升级到 3.preview 7。
因此之后,我无法获取自定义属性。
context.Resource在版本 2.2 中是类型 of AuthorizationFilterContext,但在版本 3 中是类型 of Microsoft.AspNetCore.Http.Endpoint。
现在我无法从端点获取属性。
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
namespace Gamma.Core.Security
{
public abstract class AttributeAuthorizationHandler<TRequirement, TAttribute>
: AuthorizationHandler<TRequirement> where TRequirement
: IAuthorizationRequirement where TAttribute : Attribute
{
Microsoft.AspNetCore.Http.IHttpContextAccessor _httpContextAccessor = null;
public AttributeAuthorizationHandler(Microsoft.AspNetCore.Http.IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TRequirement requirement)
{
var attributes = new …Run Code Online (Sandbox Code Playgroud)