Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子IIS应用程序中的RegisterClientScriptResource NullReferenceException_C#_Orchardcms_Asp.net 4.5 - Fatal编程技术网

C# 子IIS应用程序中的RegisterClientScriptResource NullReferenceException

C# 子IIS应用程序中的RegisterClientScriptResource NullReferenceException,c#,orchardcms,asp.net-4.5,C#,Orchardcms,Asp.net 4.5,我从.Net 4.5 Beta升级到RTM版本,现在当我有一个标准的WebForm页面,其中有一个通用标记时,我得到一个NullReferenceException,如下所示: [NullReferenceException:对象引用未设置为对象的实例。] System.Web.UI.WebControl.ValidatorCompatibilityHelper.RegisterClientScriptResource(控件控件,字符串resourceName)+180 System.Web.U

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

[NullReferenceException:对象引用未设置为对象的实例。] System.Web.UI.WebControl.ValidatorCompatibilityHelper.RegisterClientScriptResource(控件控件,字符串resourceName)+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有关。有没有关于如何解决这个问题的建议?因为它只是一个标准标签,我甚至不知道从哪里开始寻找

编辑:我找出了它断裂的原因,不过我希望果园团队的人能澄清为什么会这样做。在默认配置中,有一个部分正在编译程序集,其中有许多已删除的程序集。我取出了整个列表,我的内部页面工作正常,所以我开始一次添加一个列表,当我为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本身不使用它们。如果需要,可以安全地重新启用它们。

父应用程序是否运行相同版本的.NET?通常,子web.config会添加或替换父web.config中的内容,因此父web.config会严重影响子web.config。此外,子目录是应用程序还是虚拟目录?是的,在IIS中都配置为4.0,尽管它们是4.5。它被配置为一个应用程序,而不仅仅是一个虚拟目录?或者,如果您将它们都配置为4.5?我感觉4.5就像IIS中的3.5一样-我无法直接选择它。我唯一的选择是2.0和4.0。我确实尝试过在VS中将子项目更改为4.0,但是没有任何区别。这就是我解决这个问题的方法。为什么要这样做?是为了更好的性能还是..?选择加入总是为了更好的安全性和性能。不会让它更安全或更快,但肯定不会让它变得更糟。