C# ScriptManager的并发性问题

C# ScriptManager的并发性问题,c#,asp.net,webforms,scriptmanager,clientscriptmanager,C#,Asp.net,Webforms,Scriptmanager,Clientscriptmanager,我知道Asp.NETWebForms非常陈旧,但我希望仍然有人在维护这样一个遗留代码库 在负载测试我们的网站时,我看到了一些奇怪的错误,这些错误似乎都归结为.Net处理页面上脚本引用的并发性问题。我可以在这里看到2007年的问题报告: 我使用的是.Net 4.7.2,下面是加载时出现的错误示例: 错误1 ArgumentException:已存在具有相同密钥的条目 at System.Collections.Specialized.ListDictionary.Add(Object key

我知道Asp.NETWebForms非常陈旧,但我希望仍然有人在维护这样一个遗留代码库

在负载测试我们的网站时,我看到了一些奇怪的错误,这些错误似乎都归结为.Net处理页面上脚本引用的并发性问题。我可以在这里看到2007年的问题报告:

我使用的是.Net 4.7.2,下面是加载时出现的错误示例:

错误1 ArgumentException:已存在具有相同密钥的条目

   at System.Collections.Specialized.ListDictionary.Add(Object key, Object value)
   at System.Web.UI.ClientScriptManager.RegisterScriptBlock(ScriptKey key, String script, ListDictionary& scriptBlocks, ArrayList& scriptList, Boolean needsScriptTags)
   at System.Web.UI.ClientScriptManager.RegisterScriptBlock(ScriptKey key, String script, ClientAPIRegisterType type)
   at System.Web.UI.ScriptRegistrationManager.RegisterClientScriptInclude(Control control, Type type, String key, String url)
   at System.Web.UI.ScriptManager.RegisterClientScriptIncludeInternal(Control control, Type type, String key, String url)
   at System.Web.UI.ScriptManager.RegisterUniqueScripts(List'1 uniqueScripts)
   at System.Web.UI.ScriptManager.RegisterScripts()
   at System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e)
   at System.Web.UI.Page.OnPreRenderComplete(EventArgs e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
错误2 IndexOutOfRangeException:索引超出了数组的边界

   at System.Collections.Generic.List'1.Add(T item)
   at System.Web.UI.ScriptRegistrationManager.RegisterClientScriptInclude(Control control, Type type, String key, String url)
   at System.Web.UI.ScriptManager.RegisterClientScriptIncludeInternal(Control control, Type type, String key, String url)
   at System.Web.UI.ScriptManager.RegisterUniqueScripts(List'1 uniqueScripts)
   at System.Web.UI.ScriptManager.RegisterScripts()
   at System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e)
   at System.Web.UI.Page.OnPreRenderComplete(EventArgs e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
错误3 对象引用未设置为对象的实例

   at System.Web.UI.ClientScriptManager.RenderRegisteredScripts(HtmlTextWriter writer, ArrayList scripts, Boolean checkForScriptManagerRegistrations)
   at System.Web.UI.ClientScriptManager.RenderClientScriptBlocks(HtmlTextWriter writer)
   at System.Web.UI.Page.BeginFormRender(HtmlTextWriter writer, String formUniqueID)
   at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)
   at ASP.masters_site_master.__RenderHtml(HtmlTextWriter __w, Control parameterContainer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Page.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
从.Net查看,发生这些错误的唯一可能性是多线程。我看到
ScriptManager
ClientScriptManager
中的一些字段和方法是静态的,这可以解释这一点,尽管我还没有找到并发发生的确切场景


是否有人看到、解决或解决了此问题?

您如何准确地看到这些错误?页面是否因此未加载?他们是否登录到graylog或类似的网站?还有什么?看起来ScriptManager是在循环中调用的,这可以解释相同的键和越界。但是如果没有一些代码,我们就无能为力……只是想澄清一下:1/加载页面时,此错误被视为应用程序错误。2/我不确定如何显示代码,调用堆栈100%在.Net的内部呈现事件中。您是如何看到这些错误的?页面是否因此未加载?他们是否登录到graylog或类似的网站?还有什么?看起来ScriptManager是在循环中调用的,这可以解释相同的键和越界。但是如果没有一些代码,我们就无能为力……只是想澄清一下:1/加载页面时,此错误被视为应用程序错误。2/我不确定如何显示代码,调用堆栈100%位于.Net的内部呈现事件中。