子 IIS 应用程序中的 RegisterClientScriptResource NullReferenceException

2024-01-24

我从 .Net 4.5 Beta 升级到 RTM 版本,现在当我有一个标准 WebForm 页面,其中有一个通用 标记时,我得到一个 NullReferenceException,如下所示:

[NullReferenceException:未将对象引用设置为对象的实例。] System.Web.UI.WebControls.ValidatorCompatibilityHelper.RegisterClientScriptResource(控件控件,字符串资源名称)+180 System.Web.UI.WebControls.BaseValidator.OnPreRender(EventArgs e)+253 System.Web.UI.Control.PreRenderRecursiveInternal() +170 System.Web.UI.Control.PreRenderRecursiveInternal() +255 System.Web.UI.Control.PreRenderRecursiveInternal() +255 System.Web.UI.Control.PreRenderRecursiveInternal() +255 System.Web.UI.Control.PreRenderRecursiveInternal() +255 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+4047

我什至创建了一个示例页面(没有母版页 - 只有下面的 HTML),一旦添加验证器,我就会收到上述错误。这是它的 HTML:

<form runat="server">
     <asp:Textbox runat="server" ID="txTest" />
     <asp:RequiredFieldValidator runat="server" ControlToValidate="txTest" />
</form>

该服务器上其他站点的其他页面工作正常,因此我怀疑这与它是 IIS 中的子应用程序且父应用程序是 Orchard 有关。关于我如何解决这个问题有什么建议吗?由于它只是一个标准标签,我什至不知道从哪里开始寻找。

Edit:我找出了导致其损坏的原因,但我希望 Orchard 团队的某个人能够澄清为什么这样做。在默认配置中,有一个正在编译程序集的部分,其中有许多已删除的程序集。我把整个列表拿出来,我的内页工作了,所以我开始一次添加它们,当我添加 System.Web.Extensions 的删除条目时,它就崩溃了。我可以轻松地将其添加到我的子应用程序中,但我很好奇为什么它首先会被删除。它通常如下所示,我删除了 System.Web.Extensions 的条目以使我的子应用程序正常工作:

    <compilation debug="false" targetFramework="4.0" batch="true" numRecompilesBeforeAppRestart="250" optimizeCompilations="true">
  <buildProviders>
    <add extension=".csproj" type="Orchard.Environment.Extensions.Compilers.CSharpExtensionBuildProviderShim" />
  </buildProviders>
  <assemblies>
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <remove assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <remove assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <remove assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <remove assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <remove assembly="System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <remove assembly="System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <remove assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <remove assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </assemblies>
</compilation>

在 Orchard 的 web.config 中,一些程序集被显式删除,因为 Orchard 本身不使用它们。如果您需要它们,那么重新启用它们是安全的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子 IIS 应用程序中的 RegisterClientScriptResource NullReferenceException 的相关文章

随机推荐