当前位置: 首页 > 知识库问答 >
问题:

错误AntiForgeryToken C#MVC

潘慈
2023-03-14

我正在研究我的论文,它是一个使用MVC和Entitie框架,C#和Visual Studio的项目。我创建我的控制器和视图使用我的实体从模型,我得到通过sql服务器2016.为此,一切都好。我有一个问题与AntiForgeryToken属性在我的cshtml,trow这个错误。

 claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' was not present on the provided ClaimsIdentity.

System.InvalidOperationException: A claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' was not present on the provided ClaimsIdentity.

那么,为什么是这个附加物?这是框架中自动生成的代码,我不知道为什么会出现这个错误。你能帮我吗?我的cshtml开头是

@model Entities.Producto

@{ViewBag.Title = "Crear Producto";}

<h2>Nuevo producto</h2>


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

还有我的控制器

 namespace Web.Controllers
{
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Entities;
using Services;
using Web.Models;


public class ProductoController : BaseController
{
    IProductoService productoService;
    IRubroService rubroService;
    IProveedorService proveedorService;

    public ProductoController(IProductoService productoService, IRubroService rubroService, IProveedorService proveedorService)
    {
        this.productoService = productoService;
        this.rubroService = rubroService;
        this.proveedorService = proveedorService;
    }
    // GET: Producto
    public ActionResult Index()
    {
        List<Producto> productos = this.productoService.ObtenerProductos();

        List<Producto> productosVM = new List<Producto>();
        foreach (Producto producto in productos)//.Where(x => x.Activo == true))
        {
            if (producto.IdRubro != null)
            {
                producto.Rubro = this.rubroService.ObtenerRubro(producto.IdRubro.Value);
            }
            if (producto.IdProveedor != null)
            {
                producto.Proveedor = this.proveedorService.ObtenerProveedor(producto.IdProveedor.Value);
            }
            productosVM.Add(producto);
        }
        return View(productosVM);
    }

    // GET: Producto/Details/5
    public ActionResult Details(int? id)
    {
        Producto producto = this.productoService.ObtenerProducto(id.Value);
        if (producto == null)
            return HttpNotFound();


        return View(producto);
    }

    // GET: Producto/Create
    public ActionResult Create()
    {
        ViewBag.TiposRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre");
        ViewBag.TiposProveedor = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre");
        return View();
    }

    // POST: Producto/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Id,Descripcion,Codigo,Cantidad,Costo,Precio,Fecha,IdRubro,IdProveedor,StockMinimo,Activo,StockMaximo")] Producto producto)
    {
        try
        {
            if (ModelState.IsValid)
            {
                if (this.productoService.ObtenerProducto(producto.Id) == null)
                {
                    producto.FechaModificacion = DateTime.Today;
                    this.productoService.Crear(producto);
                    this.Success("Producto creado correctamente.");
                    return RedirectToAction("Index");
                }
                else
                {
                    this.Information("El producto ya existe.");
                }
            }
        }
        catch (Exception ex)
        {
            ViewBag.IdProveedor = new SelectList(this.proveedorService.ObtenerProveedores(), "Id", "Nombre", producto.IdProveedor);
            ViewBag.IdRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre", producto.IdRubro);
            this.Error("Hubo un error al crear el producto");
            return View(producto);
        }

        ViewBag.IdProveedor = new SelectList(this.proveedorService.ObtenerProveedores(), "Id", "Nombre", producto.IdProveedor);
        ViewBag.IdRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre", producto.IdRubro);
        return View(producto);
    }

    // GET: Producto/Edit/5
    public ActionResult Edit(int id)
    {
        Producto producto = this.productoService.ObtenerProducto(id);

        if (producto == null)
        {
            return HttpNotFound();
        }

        ViewBag.IdProveedor = new SelectList(this.proveedorService.ObtenerProveedores(), "Id", "Nombre", producto.IdProveedor);
        ViewBag.IdRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre", producto.IdRubro);
        return View(producto);
    }

    // POST: Producto/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Producto producto)
    {
        try
        {
            if (ModelState.IsValid)
            {
                producto.FechaModificacion = DateTime.Now;
                this.productoService.Actualizar(producto);
                //this.Success("Producto actualizado con exito");
                return RedirectToAction("Index");
            }

            ViewBag.IdProveedor = new SelectList(this.proveedorService.ObtenerProveedores(), "Id", "Nombre", producto.IdProveedor);
            ViewBag.IdRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre", producto.IdRubro);
            this.productoService.Actualizar(producto);
            this.Error(ModelState.Values.First().Value.Culture.Calendar.AlgorithmType.ToString());
            return RedirectToAction("Index");
        }
        catch (Exception ex)
        {
            ViewBag.IdProveedor = new SelectList(this.proveedorService.ObtenerProveedores(), "Id", "Nombre", producto.IdProveedor);
            ViewBag.IdRubro = new SelectList(this.rubroService.ObtenerRubros(), "Id", "Nombre", producto.IdRubro);
            this.Error("Hubo un error al actualizar el producto");
            return RedirectToAction("Index");
        }
    }

    // GET: Producto/Delete/5
    public ActionResult Delete(int? id)
    {
        Producto producto = this.productoService.ObtenerProducto(id.Value);

        if (producto == null)
        {
            return HttpNotFound();
        }
        return View(producto);
    }

    // POST: Producto/Delete/5
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int id)
    {
        this.productoService.Borrar(id);
        return RedirectToAction("Index");
    }
}

}

谢谢

共有1个答案

艾泉
2023-03-14

检查并更新您的Global.asax.cs文件与以下代码,您需要添加AntiForgeryConfig.

命名空间[你的项目名称]{公共类MvcApplication: System.网页。https应用{保护无效Application_Start(){区域注册。注册所有区域(); RouteConfig.注册路由(RouteTable.Routes); AntiForgeryConfig.UniqueClaimType标识符=声明类型。名称标识符; } } }

 类似资料:
  • 我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 我得到了这个错误,有什么想法会导致它吗?我试图发送一个DTO,它有一个扩展抽象类的对象列表,我想这个问题可能是因为DTO中的列表,还是因为抽象类的子类?

  • 在月食中, ”org.apache.axis2。AxisFault:传输错误: 403错误:禁止”试图从svn检出项目时发生错误。我不能实现这个错误,因此我检查了从终端使用"svn-co"命令的项目。 但是,有趣的是,当我试图在Eclipse中运行应用程序时,在输入凭据(用户名和密码)并按下“登录”按钮之后,我又遇到了相同的错误。响应是JFrame上的无效用户名/密码,但凭据没有错误。这只发生在日

  • Errors 错误 Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go’s multivalue return makes it easy to return a detailed error description alongside th

  • 本章概述了Google API错误模型,以及开发人员如何正确生成和处理错误的一般指南。 Google API使用简单的协议无关错误模型,这使我们能够在不同的API,API协议(如gRPC或HTTP)以及错误上下文(例如,异步,批处理或工作流错误)中获得一致的体验。 错误模型 错误模型在逻辑上由google.rpc.Status定义,当API发生错误时,返回一个Status实例给客户端。 以下代码段

  • 5.4. 错误 在Go中有一部分函数总是能成功的运行。比如strings.Contains和strconv.FormatBool函数,对各种可能的输入都做了良好的处理,使得运行时几乎不会失败,除非遇到灾难性的、不可预料的情况,比如运行时的内存溢出。导致这种错误的原因很复杂,难以处理,从错误中恢复的可能性也很低。 还有一部分函数只要输入的参数满足一定条件,也能保证运行成功。比如time.Date函数