我在VS(C#和ASP.net)中编写此代码:
using (StreamWriter streamWriter = File.CreateText(@"Example.aspx"))
{
streamWriter.WriteLine( "<pre>" + TextBox2.Text + "</pre>" );
}
此代码打开example.aspx文件,并将TextBox2.text的值写入Example.aspx。
但有一个问题 。当我将<h1> </h1>
写入Textbox2.text时,我收到错误。或者当我将<i> </i>
写入textbox2.text时,我得到同样的错误!
我该怎么办? 。提前致谢 。
我的错误是:
A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$TextBox2="<h1> </h1>").
答案 0 :(得分:5)
默认情况下,asp.net会阻止html代码作为文本框的输入,您必须在页面中设置此属性ValidateRequest="false"
详细示例:http://yourtahir.wordpress.com/2008/03/28/aspnet-not-allow-html-in-text-boxserver-error-in-application-a-potentialy-dangerous-requestform-value-was-detected/
答案 1 :(得分:2)
问题是ASP.NET会过滤危险请求(包含<
和>
等字符的请求)。您可以通过将ValidateRequest="false"
放在@Page声明中来禁用此验证。当然,如果你这样做,你应该确保完全理解后果,因为现在你的网站对黑客开放。在这种情况下,用户输入不会被清理,如果您决定将其写回页面,则应确保对其进行正确编码。
答案 2 :(得分:0)
除了添加ValidateRequest =“false”,因为Darin建议你需要添加&lt; httpRuntime requestValidationMode =“2.0”/&gt;在&lt; system.web&gt;内的web.config中部分。