文件上传:未提供所需的防伪标记或无效

时间:2011-03-09 11:09:06

标签: asp.net-mvc-2 file-upload

我正在尝试在我的ASP.NET MVC 2 Web应用程序中执行上传文件,但是我收到了一个错误。 未提供所需的防伪令牌或无效。

有我的aspx代码:

<% using (Html.BeginForm("ImportFile", "Suivi", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ %>
   <input type="file" id="fileUpload" name="fileUpload" />
   <input type="submit" value="Import" />
<% } %>

我的控制器中有我的方法:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ImportFile(HttpPostedFileBase fileUpload)
    {
        if( fileUpload == null)
        {
            //Process files
        }
        return View();
    }

还有错误堆栈:

A required anti-forgery token was not supplied or was invalid.
at System.Web.Mvc.ValidateAntiForgeryTokenAttribute.OnAuthorization(AuthorizationContext filterContext)
at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

那我的问题在哪里?

干杯

Skilpit

1 个答案:

答案 0 :(得分:1)

您的控制器操作使用[ValidateAntiForgeryToken]属性进行修饰,这意味着它将尝试验证令牌。因此,您需要使用Html.AntiForgeryToken帮助程序在表单中包含此标记:

<% using (Html.BeginForm("ImportFile", "Suivi", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ %>
    <%= Html.AntiForgeryToken() %>
   <input type="file" id="fileUpload" name="fileUpload" />
   <input type="submit" value="Import" />
<% } %>