文本框验证强制错误

时间:2011-11-22 05:32:39

标签: c# textbox httprequest validate-request

Vista,视觉网络开发者快递2010,c#,asp.net,webforms。使用ctrl-F5运行程序。我是唯一一个运行这个程序的人......而且它只会在我的笔记本电脑上使用本地数据库运行。

编写应用程序以下载网页,查看它们,(做一些分析),记录一些结果。 我找到了下载页面的代码 - 效果很好。然后我将文本框的text属性设置为等于页面的字符串内容。那部分也有效。然后我再次运行代码,但文本框的内容得到验证并导致错误消息。

A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$tbPageContents="
<!DOCTYPE HTML PUBLI..."). 

我可以反复运行代码而不会出现问题 - 只要我不在文本框中显示结果。我尝试了几种不同的解决方案:

  1. 我在文本框中尝试了enabled =“false”属性...这允许我查看代码的第一部分,但由于文本框未启用,我无法上下滚动查看在文件中。所以这并没有真正解决问题。

  2. 我尝试在page指令和system.web中设置validateRequest =“false”(根据http://www.asp.net/learn/whitepapers/request-validation),但据我所知,它没有任何效果。也就是说,我仍然得到错误。

  3. 在将字符串内容放入文本框之前,我尝试使用html编码字符串内容。这可以在显示器上工作......但它不能解决在下一次问题迭代时失败的问题。

  4. 我考虑过捕获错误并忽略它,但验证似乎是在它执行我的代码隐藏之前发生的。

  5. 我实际上并不打算将页面打印到窗口进行分析,但如果我可以一次性或以片段形式查看这些内容,那将非常有用。我可以从浏览器中做一个页面源代码。我不确定......也许这是首选的解决方案。

    我真的很惊讶选项#2不起作用,因为这似乎是推荐的解决方案。

    这是我使用的页面指令:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Default.aspx.cs" Inherits="wan._Default" validateRequest="false" %>
    

    还有什么需要做的才能停止validateRequest吗?

2 个答案:

答案 0 :(得分:2)

您还应该在web.config文件中使用<httpRuntime requestValidationMode="2.0" />。这指示ASP.NET将其验证模式更改为2.0版。

您可能还希望看到this question

答案 1 :(得分:0)

如果这是.NET 4,您可能还需要将<httpRuntime requestValidationMode="2.0" />添加到您的web.config