C# .findControl()空指针异常并导致ASPX服务器崩溃

C# .findControl()空指针异常并导致ASPX服务器崩溃,c#,asp.net,ext.net,C#,Asp.net,Ext.net,我有以下代码: private Ext.Net.Store getStore(string name) { return (Ext.Net.Store)DUOSPage.FindControl(name); } 及 我可以验证“store”对象和“someList”实际上都存在于页面中。在我看来,找不到FindControl。然而,我得到了一份工作 someList = Count = Cannot evaluate expression because a thread is sto

我有以下代码:

private Ext.Net.Store getStore(string name)
{
    return (Ext.Net.Store)DUOSPage.FindControl(name);
}

我可以验证“store”对象和“someList”实际上都存在于页面中。在我看来,找不到FindControl。然而,我得到了一份工作

someList = Count = Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.
以及本地服务器崩溃。对我来说,这意味着该元素可能在页面中并被找到,但它不知何故导致服务器崩溃

你知道这里出了什么问题吗?为什么这会使ASPX服务器崩溃

编辑:

错误提示提供以下信息:

Description:
Stopped working

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01:   webdev.webserver20.exe
Problem Signature 02:   10.0.0.0
Problem Signature 03:   4ba204ca
Problem Signature 04:   ****
Problem Signature 05:   1.0.0.0
Problem Signature 06:   4fe36c1c
Problem Signature 07:   3ce
Problem Signature 08:   c
Problem Signature 09:   System.NullReferenceException
OS Version: 6.1.7601.2.1.0.256.4
Locale ID:  ****

你可能混淆了两件不同的事情。您提到可以验证页面中是否存在“存储”,我认为这意味着您可以在HTML标记中看到它,但这并不一定意味着服务器可以使用它。确保设置runat=“server”以确保为“store”元素生成服务器端控件。

您可能会混淆两种不同的东西。您提到可以验证页面中是否存在“存储”,我认为这意味着您可以在HTML标记中看到它,但这并不一定意味着服务器可以使用它。确保设置runat=“server”以确保为“store”元素生成服务器端控件。

对于任何正在寻找解决方案的人,我在这里找到了它:


对于任何正在寻找解决方案的人,我在这里找到了它:


如果您使用的是Ext.NET,或者即使您没有使用,Ext.NET也包括Ext.NET.Utilities库(不依赖于Ext.NET)

实用程序库包括
ControlUtils
类和一大堆“FindControl”帮助程序,以克服本机Page.FindControl方法的限制

ControlUtils
中可能有一个选项可以避免这个问题,不过我需要看一个更完整的示例来100%说明最佳解决方案/调用是什么。像下面这样的方法可能会奏效

示例

return Ext.Net.Utilities.ControlUtils.FindControl<Store>(this, name);
返回Ext.Net.Utilities.ControlUtils.FindControl(此,名称);
ControlUtils.FindControlByClientID(string)
方法也可能有帮助

(麻省理工学院特许)

无论如何,本机ASP.NET页面.FindControl()是有限的,尽管还有其他更灵活的选项,而且您的页面上已经有了这些选项


希望这对您有所帮助。

如果您使用的是Ext.NET,或者即使您没有使用,Ext.NET也包括Ext.NET.Utilities库(不依赖于Ext.NET)

实用程序库包括
ControlUtils
类和一大堆“FindControl”帮助程序,以克服本机Page.FindControl方法的限制

ControlUtils
中可能有一个选项可以避免这个问题,不过我需要看一个更完整的示例来100%说明最佳解决方案/调用是什么。像下面这样的方法可能会奏效

示例

return Ext.Net.Utilities.ControlUtils.FindControl<Store>(this, name);
返回Ext.Net.Utilities.ControlUtils.FindControl(此,名称);
ControlUtils.FindControlByClientID(string)
方法也可能有帮助

(麻省理工学院特许)

无论如何,本机ASP.NET页面.FindControl()是有限的,尽管还有其他更灵活的选项,而且您的页面上已经有了这些选项


希望这有帮助。

服务器崩溃很奇怪。。。但是,如果FindControl返回
null
,则DUOSPage的命名容器中当前没有名为
name
的控件。(是否出于某种奇怪的原因将其从控制树中删除?是否为“服务器端”控制?)当“ASPX服务器”崩溃时,会记录哪些消息?AppPool工作程序是否重新启动?吊死?(记住,YSOD/错误消息屏幕不是崩溃。)我将错误输出添加到postTry removing DUOSPage。您可能正处于页面生命周期中的某个点,该控件被识别为页面的子级,但尚未被归类为DUOSPage的子级。我最近也经历过类似的事情。你说的“删除Duospace”是什么意思?我如何在不使用页面引用的情况下查找元素?服务器崩溃非常奇怪。。。但是,如果FindControl返回
null
,则DUOSPage的命名容器中当前没有名为
name
的控件。(是否出于某种奇怪的原因将其从控制树中删除?是否为“服务器端”控制?)当“ASPX服务器”崩溃时,会记录哪些消息?AppPool工作程序是否重新启动?吊死?(记住,YSOD/错误消息屏幕不是崩溃。)我将错误输出添加到postTry removing DUOSPage。您可能正处于页面生命周期中的某个点,该控件被识别为页面的子级,但尚未被归类为DUOSPage的子级。我最近也经历过类似的事情。你说的“remove DUOSPage”是什么意思?我如何在不使用页面引用的情况下查找元素?它实际上被标记为“runat”,当我在debug中挖掘类本身时,它实际上是存在并列出的。你在debug中挖掘哪个类?你的意思是当你看DUOSPage类时,你会看到其中的Store控件吗?是的,它是一个页面类类型。如果您仔细研究,可以找到页面上所有元素的列表。页面上的元素与page类中的控件不同。调试时,请查看DUOSPage.Controls属性,并查看Store控件是否在该集合中。它实际上标记为“runat”,当我在调试中遍历类本身时,它实际上存在并列出了您在调试中遍历的类是什么?你的意思是当你看DUOSPage类时,你会看到其中的Store控件吗?是的,它是一个页面类类型。如果您仔细研究,可以找到页面上所有元素的列表。页面上的元素与page类中的控件不同。调试时,请查看DUOSPage.Controls属性