IIS7サーバーに.NetFramework 4Webサイトを展開しようとしています。アプリケーションプールのターゲットフレームワークを.Net4に変更しましたが、アプリにエラーが表示されます。
"構成セクション 'system.web.extensions'は、セクション宣言がないため読み取ることができません"
これは、コンパクトなWeb構成ファイルを作成できる.Net4の新機能と関係があると思います。どういうわけかIIS7はこれに満足していないと思います。
このアプリを正常にデプロイするにはどうすればよいですか、それともv3.5にスケールバックする必要がありますか?私はそこに解決策があると確信しています。
何か提案はありますか?
IIS 7(.5)で新しいWebサイトを作成すると、新しいサイト用に作成されるアプリケーションプールが発生する可能性があるため、これとまったく同じエラーが発生する可能性があります。まだ2.0に設定されているため、system.web.extensions
は2.0構成ファイルでは無効です。
IIS Managerに移動し、アプリケーションプールを選択し、アプリ用のプールを選択して、右クリックし、[詳細設定]をクリックして、.NETFrameworkのバージョンをv4に設定します。
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070032
Config Error The configuration section 'system.web.extensions' cannot be read because it is missing a section declaration
Config File \\web.config
エラーはWeb.configに追加されたこのsystem.web.extensionsセクションが原因です
<system.web.extensions>
<scripting>
<webServices>
<!-- Uncomment this line to customize maxJsonLength and add a custom converter
<jsonSerialization maxJsonLength="1024000">
-->
</webServices>
<scriptResourceHandler enableCompression="true" enableCaching="true"/>
</scripting>
</system.web.extensions>
何らかの理由でそのセクションを追加すると、system.web.extensionsグループがオーバーライドされます。解決策は
..
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
何回か探し回った後、私はこの問題を自分で解決することができました(起こります!)。
どうやら構成ファイルの構造とは何の関係もありません。ターゲットサーバーにデプロイされていないが、開発マシンに存在する可能性のあるASP.NetAjaxのアセンブリです。
Web.configファイルからエントリを削除したところ、この問題は解決されました。他にも小さな問題がいくつかありましたが、言及する価値はありません。
IIS7 + .Net Framework 4の展開エクスペリエンスはそれほど難しくなく、追加された機能はそれだけの価値があります。
"aspnet_regiis.exe -iru"
が役に立たず、.NET 4.0アプリプールでサイトを起動しようとしていることが確実な場合は、IIS7.0。Webサーバーの構成の継承に問題がある可能性があります。 .NET 2.0のmachine.configを読み取ります。修正プログラムを適用すると KB958854 構成の継承に関する問題が解決します。この方法で、問題を正常に修正しました。
Leo Tang post から答えを見つけました:
この問題は、web.configの移行が原因ではありません。アプリケーションを.NetFramework4.0に更新したが、このアプリケーションを.Net Framework3.5以前のバージョンで実行されているアプリケーションプールに割り当てると、このエラーが発生します。 このアプリケーションをIISの.NetFramework4.0アプリケーションプールに割り当てて問題を修正できます。
したがって、エラーを読み取った場合セクション宣言がないため構成セクション 'system.web.extensions'を読み取ることができませんデプロイしたアプリケーションが実行するように構成されたアプリケーションプールで実行されているためです.NET 2.0または3.5(DefaultAppPool?DefaultAppPoolはデフォルトで.NET 2.0に設定されています)。
次の手順を実行します。
アプリケーション設定を開きます('基本設定'から'アクション'右パネルをクリックします) アプリケーションプールを見てください。
次に、ニーズに最適なアクションを選択します。
これは、アプリケーションをIISサーバーにデプロイし、アプリケーションのAppPoolがDefaultAppPoolで実行するように設定されているためです。DefaultAppPoolは、.NET4.0ではなく.NET2.0で実行するように自動的に構成されます。これは、System.Web.Extensionsのものがそのバージョンの.NETFrameworkで使用できないことを意味します。
Webアプリケーションのアプリケーションプール(AppPool)設定を変更するには
1. Select the application directory
2. Under Actions, click Basic Settings…
3. Change the Application Pool to ASP.NET v4.0 (or another .NET 4.0 app pool) by clicking on the Select… button.
4. Click OK
アプリケーションを再実行すると、機能するはずです。
グラフィカルなデモンストレーションについては、 このリンク を確認してください。
以下の手順で問題を解決しました。1。アプリケーションプールフレームワークを4.0に設定します。
2。ポイント1が機能しない場合、問題は構成の継承に関連している可能性があります。 http://support.Microsoft.com/kb/958854 から修正プログラムを適用します
これで問題が解決するはずです。