我在ASP.Net C#中的项目正在编译和运行,除了当我试图加载一个带有Ajax控件工具包HTMLEditorExtender的特定页面时。我得到一个键不能为空的页面错误。我试着移除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任何帮助都会受到极大的赞赏。我试着用谷歌搜索这个错误,但找不到一个似乎有效的解决方案。
发布于 2012-01-12 14:47:19
<%@ 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文件中做任何更改,我之前得到了相同的异常,但当我尝试这样做时,它得到了解决
发布于 2011-10-26 21:58:31
我不知道这会不会是您的问题,但我在system.web的web.config中没有以下部分时遇到了这个问题:
<sanitizer defaultProvider="AntiXssSanitizerProvider"> <providers> <add name="AntiXssSanitizerProvider" type="AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider"></add> </providers> </sanitizer>
您还需要在您的configsections中包含以下内容:
<sectionGroup name="system.web"> <section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" /> </sectionGroup>
发布于 2012-09-29 12:31:44
您必须将这些行添加到web.config中
Configsecton:
<configSections>
<sectionGroup name="system.web">
<section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" />
</sectionGroup>
</configSections>System.web
<system.web>
<sanitizer defaultProvider="AntiXssSanitizerProvider">
<providers>
<add name="AntiXssSanitizerProvider" type="AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider" />
</providers>
</sanitizer>你的烦恼应该会消失,就像对我一样。如果它有任何帮助,我通过查看对象浏览器找到了解决方案。
https://stackoverflow.com/questions/7826813
复制相似问题