无法加载类型“AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider”。

5

我尝试使用htmleditorextender,但是出现了错误。以下是我的设置:

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:TextBox runat="server" ID="textBoxGalleryUrl" CssClass="cstmtxtclr" />
<asp:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="textBoxGalleryUrl"></asp:HtmlEditorExtender>

我的web.conf设置如下:

  <configSections>
    <sectionGroup name="system.web">
      <section name="sanitizer"
          requirePermission="false"
          type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit"/>
    </sectionGroup>
  </configSections>

  <system.web>
    <!--<httpRuntime requestValidationMode="2.0"/>-->
    <compilation debug="true" targetFramework="4.0"/>

    <sanitizer defaultProvider="AntiXssSanitizerProvider">
      <providers>
        <add name="AntiXssSanitizerProvider"
              type="AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider"></add>
      </providers>
    </sanitizer>
  </system.web>

我在我的bin文件夹中有以下dll文件;

AntiXSSLibrary.dll
SanitizerProviders.dll
HtmlSanitizationLibrary.dll

但我仍然收到这个错误;

Could not load type 'AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider'.

为什么我会收到这个错误?

尝试一下Bertzzie在https://dev59.com/iWfWa4cB1Zd3GeqPg26o中提供的解决方案。对我有效。 - Fernando Angelieri
4个回答

14

作为默认的清洁剂,使用AntiXss已经不再受支持,自2012年6月起。根据官方公告,显然新版本的AntiXss破坏了太多东西。

要使用HTML Agility Pack与AjaxControlToolkit一起使用,您首先需要使用Nuget安装该软件包(说明)。

然后,您可以通过修改web.config来使用HTML Agility Pack作为您的清洁剂,如下所示:

<configuration>
    <configSections>
        <sectionGroup name="system.web">
            <section name="sanitizer" requirePermission="false"
                     type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" />
        </sectionGroup>
    </configSections>

    <system.web>
        <sanitizer defaultProvider="HtmlAgilityPackSanitizerProvider">
            <providers>
                <add name="HtmlAgilityPackSanitizerProvider" type="AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider"></add>
            </providers>
        </sanitizer>
      </system.web>
</configuration>

希望这有所帮助。

我尝试了,但是出现了这个错误 -> 无法加载文件或程序集“HtmlAgilityPack,Version=1.4.0.0,Culture=neutral,PublicKeyToken=bd319b19eaf3b43a”或其某个依赖项。所定位的程序集清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040) - Idrees Khan
你是否已经从Nuget安装了HTML Agility Pack?我记得我先安装了它,所以我不需要设置任何东西... - bertzzie
我正在使用它,但它甚至不能删除<script>alert('asdas')</script> @MikeKingscott - Furkan Gözükara

2
"

HTML Agility Pack必须安装在所有新版本的Ajax Control Toolkit中。不幸的是,网络上很多答案都是错误的。

"

1

在寻找解决同样问题的方法时,我费尽心思,最终发现需要通过库包管理器加载Ajax Control Kit...

PM > Install-Package AjaxControlToolkit

这个方法对我很有效。


0

建议您从此处下载最新的Html Agility Pack: http://htmlagilitypack.codeplex.com/,并将其放置在bin文件夹中,并在项目中添加引用。

或者使用以下安装命令:

PM> Install-Package HtmlAgilityPack

您可以查看此链接 http://nuget.org/packages/HtmlAgilityPack

您不必使用或引用AntiXSSLibrary,只需使用HtmlAgilityPackSanitizerProvider即可消除错误。

祝您好运!


hsobhy,我该如何仅使用HtmlAgilityPackSanitizerProvider?你能解释一下吗? - Furkan Gözükara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接