[英]MVC 5 | Error 400 Entity too large (Identity User has a lot of Roles)
編輯:為此工作的解決方案:實現了這個:來自https://github.com/aspnet/Security/blob/22d2fe99c6fd9806b36025399a217a3a8b4e50f4/samples/CookieSessionSample/MemoryCacheTicketStore.cs的 SessionCookieStore
並將其添加到我的啟動中:
services.AddSingleton<ITicketStore, MemoryCacheTicketStore>();
services.AddOptions<CookieAuthenticationOptions>(IdentityConstants.ApplicationScheme)
.Configure<ITicketStore>((options, store) => {
options.SessionStore = new MemoryCacheTicketStore();
});
我正在使用Microsoft-Identity Platform和ControllerDiscovery為我的項目中的每個 Controller 操作播種角色。 這些角色被保存到數據庫中,並且可以應用於用戶以使他們能夠訪問應用程序的每個部分。 Controller 中的每個操作都有一個自定義授權標簽(例如:[Authorize("BaseData:Home:Index")]。這工作得很好。
現在有很多 Controller 操作和區域,並且在啟動時創建了很多角色。
一個“超級管理員”-用戶正在自動播種和授予所有角色。 現在我的錯誤:
當“SuperAdmin”登錄時,出現此錯誤(僅在 IIS 上的生產中):
這些 cookies 在請求中發送:
如何減少這個cookie? 或者也許禁用cookie並檢查服務器端的角色?
我的配置服務() function:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<Nutzer, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultUI()
.AddErrorDescriber<CustomIdentityErrorDescriber>()
.AddDefaultTokenProviders();
services.Configure<SecurityStampValidatorOptions>(options => options.ValidationInterval = TimeSpan.Zero);
//https://stackoverflow.com/questions/51046239/creating-dynamic-role-based-authorization
services.AddSingleton<IMvcControllerDiscovery, MvcControllerDiscovery>();
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireDigit = false;
options.Password.RequiredLength = 6;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
options.Password.RequireNonAlphanumeric = false;
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedAccount = false;
});
services.AddControllersWithViews(options =>
{
options.ModelBinderProviders.Insert(0, new CustomBindersProvider());
}).AddRazorRuntimeCompilation();
}
編輯1:
設置HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters鍵不是我想要的,因為將來會有更多的角色並且 MaxByteSize 是有限的。
我想你可以參考這個部分來解決你的問題,因為你的問題是請求中也有大的 cookie,所以我們應該做的是減少 cookie 大小或增加服務器限制。
您可以先嘗試清理瀏覽器中的cookie(ctrl+shift+del在瀏覽器中彈出並清理cookie),如果這沒有意義,那么您可以嘗試打開寄存器和go到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
將MaxFieldLength
和MaxRequestBytes
設置為較大的值。 設置好值后,別忘了重啟電腦才能啟用配置。 起初我將值設置為 1,然后我也遇到了同樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.