代码之家  ›  专栏  ›  技术社区  ›  Aaronontheweb

引发“潜在危险的请求.Form值”错误的条件是否取决于.NET配置和版本?

  •  3
  • Aaronontheweb  · 技术社区  · 15 年前

    我正在测试一个微型的 BlogEngine.NET 我之前写的扩展,每当我使用自己的扩展或非常流行的syntaxhighlighter扩展时,我都会收到以下错误消息,这两个扩展都有类似的行为,并且都实现了微型的mce插件:

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

    原始URL:/admin/pages/add\entry.aspx

    信息:潜在危险 从中检测到窗体值 客户 (ctl00$cphadmin$txtContent$tinymce1$txtContent=”

    来源:system.webstacktrace:at system.web.httpRequest.validateString(字符串 值,字符串集合键, 请求验证源 请求集合) system.web.httpRequest.validateNameValueCollection(nameValueCollection) NVC,请求验证源 请求集合) system.web.httpRequest.get_form()位于 system.web.httprequest.get_item(字符串 AT) blogengine.core.web.httpmodules.compressionmodule.context_PostReleaseRequestState(对象 发件人,事件参数e)在 d:\projects\be-1610\blogengine\dotneslave.businesslogic\web\httpmodules\compressionmodule.cs:line 62 AT system.web.httpapplication.syncEventExecutionStep.system.web.httpapplication.ieExecutionStep.execute()。 在 system.web.httpapplication.executestep(iexecutionstep 步骤,布尔值& 同步完成)目标站点: void validateString(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中使用调试模式测试扩展,并从一个单独的实例运行站点时,我没有收到任何错误。这个错误。

    我几乎可以肯定,这个问题只发生在我的本地主机IIS实例上,这表明它是配置问题或特定于ASP.NET 4.0的行为,但我不知道具体是什么。你们中有人知道这可能是什么原因吗?

    4 回复  |  直到 14 年前
        1
  •  6
  •   jons911    14 年前

    您现在将其视为错误的原因是.NET 4.0。这是ASP.NET 4.0中的一个突破性变化,并对其进行了描述 here .

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

    <httpRuntime requestValidationMode="2.0" />

    希望有帮助!

        2
  •  5
  •   egrunin    15 年前

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

    当然,既然你 偏执于你的投入(你 是吗?)你可以关掉那个警告。

    如何关闭该页:

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

    要关闭整个网站,请将其置于web.config中:

    <system.web>
        <pages validateRequest="false" />
        [etc.]
    
        3
  •  0
  •   spinon    15 年前

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

        4
  •  0
  •   user240141    15 年前

    这主要是因为,用户可能已经在HTML标记表单中发布了一些数据,或者微型MCE正在HTML表单中发布数据。尝试查找将从编辑器返回纯文本的属性。如果它解决了你的问题,你也可以尝试上面的方法。