ASP.NETを始めようとすれば、一つのパソコン上で、Web Deloper ExpressとIISの2つを使う。ASP.NETでプログラムを書くなり、参考書に掲載されているプログラムを試すなりする。次に、それをIISにコピーするなりして、動作を確認する。
所が、IISの使い方が、今一分かりづらい。初めの内は、問題も無く動作するが、データベースなど、プログラムが複雑化すると、Web Developerでは、動作したのに、IISでは、動作しない。アプリケーションプールを変えると、動作する事も有ったり、無かったり。なんだこれは、と訳が分からないとぐろにハマる。
IIS単独で仕立てたパソコンでは、動作するが、何故か開発用に仕立てたパソコンでは、エラーが出る。そんな時、ネットで目にした対策が、役に立った。実際多くのこうした問題は、これ一つで何とかなる場合が多かった。
Web Developer上は動作しても、IIS上では、「HTTP エラー 500.22 - Internal Server Error ASP.NET 設定が、統合されたマネージ パイプライン モードで適用されないことが検出されました。」などと出る場合には、まさにこれだと、言える。
対策は、Web.configファイルに、次の事を追加する。これは、開発環境ばかりでなく、これが書き込まれたままでも、プログラムをサーバに移しても、エラーにもならずに、動作した。
<configuration>
<!--
・・・・・・・・・
以下を追加 -->
<system.webServer>
<handlers>
<remove name="PageHandlerFactory-ISAPI-2.0" />
<remove name="PageHandlerFactory-Integrated" />
<add name="MRWebResource" preCondition="integratedMode" path="MRWebResource.axd" type="GrapeCity.Web.MultiRow.MRWebResource" verb="GET" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<!-- ここまで -->
</configuration>