我在这里阅读了与此错误相关的所有其他帖子。也许我在这里遗漏了一些东西,但我不知道是什么。我正在使用textArea在其中输入文本(html文本) 此文本区域与我的域类属性
绑定public class SomeClass{
...
[AllowHtml]
public string CommentText { get; set; }
...
}
我还尝试添加 [ValidateInput(false)] 属性,但没有。但是通过阅读错误文本,我发现该请求甚至没有出现在控制器中,它在 Application_BeginRequest()中被破坏了。 这是错误消息:
A potentially dangerous Request.Form value was detected from the client (CommentText="<p>ddd</p>")
Line 23: protected void Application_BeginRequest(Object sender, EventArgs e)
Line 24: {
Line 25: if (HttpContext.Current.Request["RequireUploadifySessionSync"] != null)
Line 26: UploadifySessionSync();
Line 27: }
Source File: D:\Projects\...\Global.asax.cs Line: 25
Stack Trace:
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (CommentText="<p>ddd</p>").]
System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8755668
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +122
System.Web.HttpRequest.get_Form() +114
我知道我可以在web配置中关闭检查整个应用程序。但我只在一种情况下需要这个(允许HTML输入)
更奇怪的是,这是几天前的工作,我没有在这里做任何改变,只是登录和注销用户
我在这做错了什么?
好的,现在我删除这个代码fom global.asax:
if (HttpContext.Current.Request["RequireUploadifySessionSync"] != null)
UploadifySessionSync();
现在它有效。但我在这里需要这个代码。为什么会产生这个错误?
答案 0 :(得分:3)
答案 1 :(得分:0)
您的具体问题是您有代码查看BeginRequest中的请求参数,该参数在ASP.NET管道中比绑定模型时更早(AllowHtml
或ValidateInput
属性会发挥作用。)
看起来您正在使用您的代码围绕Flash上传实施安全性(我正在做的事情非常类似。
在我的情况下,我最终只是在BeginRequest方法中捕获HttpRequestValidationException
并吞下异常。这不是最佳实践,但验证将在管道中稍后执行,因此您仍然可以控制验证。