[英]ASP.NET MVC Non English URL Request Validation Exception
在我的ASP.NET MVC 2应用程序中,我有此编码的图像网址-
<img src="/Image?Selected_Nme=Mayag%26%23252%3Bez%2C%20PR/>
未编码的Selected_Nme是“Mayagüez,PR”。
我会收到这样的异常错误-
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.QueryString value was detected from the client (amp;Selected_Nme="Mayagüez, PR").]
然后,我用“ [ValidateInput(false)]”修饰了控制器中的动作,如下所示-
[ValidateInput(false)]
[HttpGet]
[OutputCache(CacheProfile = "test")]
public ActionResult Image(string Selected_Nme = ""){
...
}
在此之后,我仍然看到相同的错误。
我该怎么办才能消除问题?
谢谢,
您需要配置requestValidationMode
:
<system.Web>
...
<httpRuntime requestValidationMode="2.0"/>
您可以禁用整个应用程序的请求验证,但是不建议这样做。 建议仅针对要允许标记的虚拟路径或特定页面有选择地禁用请求验证。
无论哪种情况,您都必须在Web.config文件中进行两项更改。 第一个更改是将httpRuntime元素的requestValidationMode属性设置为“ 2.0”。 此设置使请求验证在请求处理事件的顺序中稍后发生。 对于使用ASP.NET 4和更高版本的应用程序,此设置是必需的,因为从ASP.NET 4开始,请求验证在请求生命周期中比在早期版本的ASP.NET中更早进行。
最后值得一提的笔记。 使用[ValidateInput(false)]
禁用对发送到方法中的所有数据的验证。 如果您仍然希望对发送的其他任何属性保留验证,则可以对类的特定属性禁用验证:
public class SomeModel {
[AllowHtml]
public string Selected_Nme { get; set; }
// this property will still be validated!
public string PleaseDontXSSMe { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.