3

我正在为我之前编写的BlogEngine.NET扩展测试 Tiny_MCE 插件,每当我使用自己的扩展或非常流行的 SyntaxHighlighter 扩展时,我都会收到以下错误消息,它们都具有相似的行为并且都实现了 Tiny_MCE 插件:

网址:' http://localhost/admin/Pages/Add_entry.aspx '

原始网址:/admin/Pages/Add_entry.aspx

消息:从客户端检测到潜在危险的 Request.Form 值(ctl00$cphAdmin$txtContent$TinyMCE1$txtContent="

来源:System.WebStackTrace:在 System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) 在 System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) 在 System.Web.HttpRequest.get_Form() 在D:\Projects\Be-1610\BlogEngine\DotNetSlave.BusinessLogic\Web\HttpModules\ 中 BlogEngine.Core.Web.HttpModules.CompressionModule.context_PostReleaseRequestState(Object sender, EventArgs e) 的 System.Web.HttpRequest.get_Item(String key) CompressionModule.cs:System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 的第 62 行在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,布尔值&完成同步)TargetSite:无效验证字符串(System.String,System.String,System.Web.Util.RequestValidationSource)

因此,我的问题是:尽管我在本地环境(IIS 7.5 ASP.NET 4.0 集成应用程序池)上收到此错误,但在我的实时环境(IIS 7.5 ASP.NET 3.5 SP1/3.0 / 2.0)上没有收到任何错误。我在 Visual Studio 2010 中使用调试模式测试扩展并从单独的实例中运行该站点我没有收到此错误。

我几乎可以肯定,这个问题只发生在我的 localhost IIS 实例上,这表明它是配置问题或特定于 ASP.NET 4.0 的行为,但我不知道究竟是什么。你们有谁知道这可能是什么原因造成的吗?

4

4 回答 4

6

您现在将其视为错误的原因是 .NET 4.0。这是 ASP.NET 4.0 中的一项重大更改,并在此处进行了描述。

最快的恢复是将其添加到您的 web.config 中:

<httpRuntime requestValidationMode="2.0" />

希望有帮助!

于 2010-12-06T21:42:59.930 回答
5

它告诉您一个控件(例如文本输入)正在返回类似于 HTML 或 javascript 的内容,并且它不会假设您正在清理您的输入。

当然,由于您自己的输入感到偏执(您,不是吗?)您可以关闭该警告。

如何为该页面关​​闭它:

<%@ Page Language="vb" ValidateRequest="false" [etc]

要为整个站点关闭它,请将其放在 web.config 中:

<system.web>
    <pages validateRequest="false" />
    [etc.]
于 2010-07-07T04:50:56.387 回答
0

我相信 TinyMCE 有一种方法可以对它提交给服务器的内容进行编码。检查一下,这条消息就会消失。因为@egrunin 说的是正确的。

于 2010-07-07T04:52:58.497 回答
0

这基本上是因为,用户可能已经以 html 标签形式发布了一些数据,或者 tiny-mce 正在以 html 形式发布数据。尝试查找将从编辑器返回纯文本的属性。如果它解决了您的问题,您也可以尝试上述方法。

于 2010-07-07T16:36:48.970 回答