2016-10-15 3 views
1

bekomme ich diesen Fehler - auch wenn die AntiForgeryToken sind auf jeden Fall meiner Ansicht nach in einem Formular-Tag:AntiForgeryToken Fehler in ASP.NET MVC 5 app

Die erforderlichen Fälschungs Cookie "__RequestVerificationToken_L0NpdTpLaW5nMTZNVkM10" sind nicht Geschenk.

-Controller

/// <summary> 
/// Delete 
/// </summary> 
public ActionResult Delete(int Id) 
{ 
    // Get place from Id 
    var poll = PollRepo.Select(Id); 

    if (poll == null) 
     return HttpNotFound(); 

    return View(poll); 
} 

/// <summary> 
/// Confirm Delete 
/// </summary> 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public ActionResult DeleteConfirmed(int Id) 
{ 
    // Delete poll by Id from db 
    PollRepo.Delete(Id); 

    // Redirect to index 
    TempData["message"] = "Poll Deleted"; 
    return RedirectToAction("Index"); 
} 

Ansicht

<dd> 
     @Html.DisplayFor(model => model.Abc) 
    </dd> 

</dl> 

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-actions"> 
     <input type="submit" value="Delete" class="btn btn-default" /> | 
     @Html.ActionLink("Back to List", "Index") 
    </div> 
} 

In erzeugten HTML-Seite

<form action="/MyApp/MyCont/MyAct/Delete/7" method="post"><input name="__RequestVerificationToken" type="hidden" value="JYMlRqNTUF6eoagnN6k7GrC1mJLKs1HDU4RCY_5_MEh2sIoJtumYEiM4LQF2BcKrf881xm-zdRU-KwBt381L9vBhuEJRLnMJY8aEgjVvdd41" /> 

Wenn ich die Löschtaste drücke, wird der Fehler zurückgegeben.

+0

Die Nachricht bezieht sich auf _anti-forgery ** Cookie ** _ so ist es wegen des Plätzchens nicht anwesend –

+0

Eine mögliche Ursache ist, '' in der 'web.config .cs' Datei, aber das Projekt ist nicht auf SSL eingestellt. –

+0

@StephenMuecke Es war requireSSL danke! Der Server benötigt SSL - und dieses Flag wurde fälschlicherweise auch auf dem Dev-Rechner gesetzt. Wenn Sie das in eine Antwort umwandeln, akzeptiere ich es. – niico

Antwort

2

Die Fehlermeldung, die Sie sehen, bezieht sich auf die Anti-Fälschung Cookie, nicht das Token (der Code, den Sie gezeigt haben, wird das Token korrekt in der Anfrage senden).

Anders als Angriffe von böswilligen Benutzern oder etwas auf dem Client das Cookie verursacht gelöscht werden, eine Ursache für diesen Fehler ist, dass Ihre web.config.cs Datei

<httpCookies requireSSL="true" /> 

enthält aber Sie Projekt soll nicht die Verwendung von SSL .