Ensar Eray
Ensar Eray

Reputation: 66

asp.net boilerplate: value cannot be null. Paramater name: key

I'm trying to create a record in db but I take this error at below.

its image of error page buy may not work

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

Answers (1)

aaron
aaron

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

Related Questions