我在ASP.Net C#中的项目正在编译并且正常运行,除了当我尝试加载一个具有Ajax Control Toolkit HTMLEditorExtender的特定页面时。我得到一个Key不能是空页错误。我尝试删除htmleditorextender并放置一个asynchfileupload控件,以确保脚本管理器正常工作,页面出现正常,上传控件正常工作。所以它与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
任何帮助都会受到很大的影响。我试过谷歌搜索这个错误,找不到似乎有用的解决方案。
答案 0 :(得分: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文件中进行任何更改 早些时候得到同样的例外,但是当我尝试这个时它得到了 解决
答案 1 :(得分:0)
我不知道这是不是你的问题,但是当我在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>
答案 2 :(得分:0)
您必须将这些行添加到您的web.config
Configsectons:
<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>
你的麻烦应该像对待我一样消失。 如果有任何帮助,我可以通过查看对象浏览器找到解决方案。