我正在尝试在我的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
答案 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" />
<% } %>