C# ASP.Net MVC:从客户端检测到潜在危险的请求.Files值

C# ASP.Net MVC:从客户端检测到潜在危险的请求.Files值,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我在asp.net页面中上载了一个文件名为“Ex&#u 17.pdf”的文件,然后在后端使用Request.Files[0]获取文件时,出现以下错误 从客户端检测到潜在危险的Request.Files值(filename=“Ex&#u 17.pdf”) 如果我将文件名更改为以下类型,那么工作正常 “Ex&#u 17.pdf” “ex17.pdf” “Ex&_17.pdf” “ex17.pdf” 我假设只有文件名中的&#被视为潜在危险 所以,我的问题是,是否有其他特殊的字符产生了这个错误 我在

我在asp.net页面中上载了一个文件名为“Ex&#u 17.pdf”的文件,然后在后端使用Request.Files[0]获取文件时,出现以下错误

从客户端检测到潜在危险的Request.Files值(filename=“Ex&#u 17.pdf”)

如果我将文件名更改为以下类型,那么工作正常

  • “Ex&#u 17.pdf”
  • “ex17.pdf”
  • “Ex&_17.pdf”
  • “ex17.pdf”
我假设只有文件名中的&#被视为潜在危险

所以,我的问题是,是否有其他特殊的字符产生了这个错误


我在谷歌上搜索了这个错误,但什么也没找到。

您使用的是HTML语法


&#…
是html编码的标记集。我建议更改它。

默认情况下,MVC会尝试检测发送到服务器的可疑值,从而导致“从客户端检测到潜在的危险值”。错误

例如,不允许您发送
警报(“hello”)在文本输入中。有关类似错误,请参阅

因为
可用于引用,文件名
Ex&#u 17.pdf
可疑。以下是这些代码的图表(谢谢):

您可以禁用文件上载的验证:

  • 我不确定使用
    [allowtml]
    在ViewModel中为
    HttpPostedFileBase
    属性赋值是否有效

  • 您还可以尝试使用
    [ValidateInput(false)]
    标记操作方法


或者按照phonemyatt的建议,在发布文件之前,使用客户端JavaScript删除或编码文件名中的可疑字符。

是否要避免在iis中进行验证?禁用验证实际上不是一个好主意。在前端,您应该使用javascript将所有这些字符编码为Html。谢谢,在发布文件之前,我已经转义了这些字符。