2009-08-26 92 views
2

任何人都可以解释什么可能会导致此错误。我想它的报价。Form Post Error

Exception Details: System.Web.HttpRequestValidationException: A potentially 
dangerousRequest.Form value was detected from the client 
(ctl00$ContentPlaceHolder1$DetailsView1$txtContent="...l economy.<br /><br />The 
Prop..."). 

回答

1

控制(可能是一个文本框)的内容包含哪些ASP.net认为是标记,如:

<br /><br /> 

您可以在.aspx文件中添加ValidateRequest =“假”的Page指令如下:

<%@ Page ........ ValidateRequest="false" ........ %> 

至于其他的答案中指出,asp.net这样做是为了尽量保护您免受潜在的恶意输入,所以请确保您知道风险和编码/解码的用户数据适当的。

+0

可以在生产环境中将其设置为false吗? – madphp 2009-08-26 15:03:18

+0

如果您很高兴该页面上的控件*应该*提交包含标记或内容的内容,*看起来像*它包含标记,那么是的。没有性能风险,这是一个asp.net实施的保障 – Rob 2009-08-26 15:19:47

0

这将是'<'和'>'。

编辑:它假定包含窗体响应中的html条目旨在作为表单所在的服务器上的攻击。因此,默认情况下,任何类似html的代码(即包含'<'或'>')都会自动标记为问题。解决这个

一种方式是通过设置validateRequest =“假”在该页面的Page指令关闭这种类型的验证,但也有其他(更好)的方式来解决这一点。

Here's有关Microsoft此信息的一些信息。

+0

将validateRequest更改为false是危险举动,如果不知道用户,站点和系统的风险,则不应更改。该URL确实有关于如何处理这些问题的一些很好的信息。 – 2009-08-26 15:29:11

0

它的html“< br/>”标签。

这是an article with a brief explanation。还向您显示如何通过关闭验证来解决此问题。虽然我想这只是关闭它而有点危险。

0

它实际上应该是

<br /><br /> 

它抱怨。

0

我的想法来看看:允许抛出此异常。使用Application_Error处理程序编写代码,该代码重定向(使用Response.Redirect - 这很重要,因为这可以让用户的浏览器返回)用户到自定义错误页面。在这个页面上写下一些文字,解释用户错误地输入了一些文字。例如:

“尊敬的用户,您输入了一些无效的文本,如”<“或”。“,请仅使用字符和数字输入文本。

把该网页上的链接,而这个链接可以包含一个javascript“后退”指令:

href="javascript: history.go(-1)" 
点击suchlink将通过他们的浏览器被重定向到前一页后

用户,在那里他们可以重新 - 编辑他们的输入。