Reputation: 66
I'm trying to create a record in db but I take this error at below.
This is the error
ArgumentNullException: Value cannot be null.
Parameter name: key
System.Collections.Generic.Dictionary<TKey, TValue>.FindEntry(TKey key)
Microsoft.AspNetCore.Http.Internal.RequestCookieCollection.ContainsKey(string key)
Abp.AspNetCore.Mvc.Antiforgery.AbpAutoValidateAntiforgeryTokenAuthorizationFilter.ShouldValidate(AuthorizationFilterContext context) in AbpAutoValidateAntiforgeryTokenAuthorizationFilter.cs
Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ValidateAntiforgeryTokenAuthorizationFilter.OnAuthorizationAsync(AuthorizationFilterContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
This is my controller:
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(CreateUserInput input)
{
if (HttpContext.Request.Cookies.ContainsKey(".AspNetCore.Antiforgery."))
{
_userAppService.Create(input);
}
return RedirectToAction("Index","Home");
}
this is my html page:
@model DutyV2.Users.DTO.CreateUserInput
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<form asp-action="Index" method="post">
<div class="input-group">
<label class="control-label" asp-for="Name"></label>
<input asp-for="Name" class="form-control" type="text" />
</div>
<div class="input-group">
<label class="control-label" asp-for="Email"></label>
<input asp-for="Email" class="form-control" type="email" />
</div>
<input type="submit" value="Create"/>
</form>
Upvotes: 1
Views: 1731
Reputation: 43073
Update your ABP version to v4.0.1 or above.
It is due to ContainsKey
getting called with null
if cookie authentication is not used.
The bug occurred in AbpAutoValidateAntiforgeryTokenAuthorizationFilter
and AbpValidateAntiforgeryTokenAuthorizationFilter
.
The relevant pull request: https://github.com/aspnetboilerplate/aspnetboilerplate/pull/3986
Upvotes: 1