2

.Net 4.5 Beta から RTM バージョンにアップグレードしましたが、標準の WebForm ページに汎用の <asp:RequiredFieldValidator /> タグがあると、次のような NullReferenceException が発生します。

[NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。] System.Web.UI.WebControls.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 であることに関連していると思われます。これを解決する方法について何か提案はありますか? これはただの標準的なタグなので、どこから調べればよいかさえわかりません。

編集:オーチャードチームの誰かがなぜこれが行われたのかを明確にしてくれることを望んでいますが、何が壊れたのかを突き止めました。デフォルトの構成内には、アセンブリのコンパイルの下にセクションがあり、その中には削除された多数のアセンブリがあります。リスト全体を取り出し、内部ページが機能したので、一度に 1 つずつ追加し始め、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>
4

1 に答える 1

2

Orchard の web.config では、一部のアセンブリは Orchard 自体で使用されていないため、明示的に削除されています。それらが必要な場合は、再度有効にしても安全です。

于 2012-12-06T20:30:05.063 に答える