【问题标题】:HTMLEditorExtender causing 'Key cannot be null' errorHTMLEditorExtender 导致“键不能为空”错误
【发布时间】:2011-10-19 19:14:43
【问题描述】:

我在 ASP.Net C# 中的项目正在编译和运行良好,但当我尝试加载具有 Ajax Control Toolkit HTMLEditorExtender 的特定页面时除外。我得到一个 Key cannot be null page 错误。我尝试删除 htmleditorextender 并放置一个 asynchfileupload 控件,以确保 scriptmanager 正常工作,并且页面正常运行并且上传控件正常工作。所以它是专门针对 htmleditorextender 的。这是我的代码:

<asp:TextBox ID="txtMailMsgContent" TextMode="MultiLine" runat="server"/>
<cc1:HtmlEditorExtender ID="HTMLEditorExtender" runat="server" 
TargetControlID="txtMailMsgContent">

            <Toolbar> 
                <cc1:Undo />
                <cc1:Redo />
                <cc1:Bold />
                <cc1:Italic />
                <cc1:Underline />
                <cc1:StrikeThrough />
                <cc1:Subscript />
                <cc1:Superscript />
                <cc1:JustifyLeft />
                <cc1:JustifyCenter />
                <cc1:JustifyRight />
                <cc1:JustifyFull />
                <cc1:InsertOrderedList />
                <cc1:InsertUnorderedList />
                <cc1:CreateLink />
                <cc1:UnLink />
                <cc1:RemoveFormat />
                <cc1:SelectAll />
                <cc1:UnSelect />
                <cc1:Delete />
                <cc1:Cut />
                <cc1:Copy />
                <cc1:Paste />
                <cc1:BackgroundColorSelector />
                <cc1:ForeColorSelector />
                <cc1:FontNameSelector />
                <cc1:FontSizeSelector />
                <cc1:Indent />
                <cc1:Outdent />
                <cc1:InsertHorizontalRule />
                <cc1:HorizontalSeparator />
            </Toolbar>
        </cc1:HtmlEditorExtender>

页面错误中显示错误的行是这一行:

   <cc1:HtmlEditorExtender ID="HTMLEditorExtender" runat="server" TargetControlID="txtMailMsgContent">

这是堆栈跟踪:

[ArgumentNullException: Key cannot be null.
Parameter name: key]
   System.Collections.Hashtable.get_Item(Object key) +9355627
   AjaxControlToolkit.Sanitizer.Sanitizer.Initialize() +163
   AjaxControlToolkit.HtmlEditorExtender..ctor() +54
   ASP.mail_emailmessage_aspx.__BuildControlHTMLEditorExtender() in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:111
   ASP.mail_emailmessage_aspx.__BuildControlformMailMessage() in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:84
   ASP.mail_emailmessage_aspx.__BuildControlTree(mail_emailmessage_aspx __ctrl) in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:1
   ASP.mail_emailmessage_aspx.FrameworkInitialize() in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\26676eb7\92c7e946\App_Web_kemmoois.0.cs:0
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +54
   System.Web.UI.Page.ProcessRequest() +78
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +49
   ASP.mail_emailmessage_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\26676eb7\92c7e946\App_Web_kemmoois.0.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

任何帮助将不胜感激。我已尝试在谷歌上搜索此错误,但找不到似乎可行的解决方案。

【问题讨论】:

标签: c# asp.net-ajax ajaxcontroltoolkit html-editor


【解决方案1】:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor" TagPrefix="cc1" %>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>    
        <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBox1">
        </asp:CalendarExtender>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <cc1:Editor ID="Editor1" runat="server" />
        <asp:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="TextBox2">
        </asp:HtmlEditorExtender>
        <asp:AnimationExtender ID="AnimationExtender1" runat="server" TargetControlID="TextBox3" >
        </asp:AnimationExtender>
    </div>
    </form>
</body>
</html>

试试这段代码,不要对我之前的 web.config 文件进行任何更改 之前得到了同样的异常但是当我尝试这个时它得到了 解决了

【讨论】:

    【解决方案2】:

    我不知道这是否会是您的问题,但是当我在 system.web 中的 web.config 中没有以下部分时遇到了这个问题:

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

    您还需要在配置部分中包含此内容:

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

    【讨论】:

      【解决方案3】:

      您必须将这些行添加到您的 web.config

      配置部分:

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

      系统.web

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

      你的烦恼应该会消失,就像它们对我一样。 如果有任何帮助,我通过查看对象浏览器找到了解决方案。

      【讨论】:

        猜你喜欢
        • 2020-11-30
        • 2011-01-03
        • 2019-12-05
        • 1970-01-01
        • 2010-11-03
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 2017-03-18
        相关资源
        最近更新 更多