21

HttpModule を使用して、サイトで URL 短縮を行っています。Visual Studio 2008 と IIS 7、および .Net 3.5 を使用しています。

モジュールが web.config のsystem.webServer要素で指定され、サイトが IIS で実行されている場合、正常に動作します。構成は次のようになります。

<system.webServer>
        <modules>
            <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
        </modules>...

私のモジュールは BeginRequest イベントにアタッチされ、すべてが機能します。ただし、組み込みの VS Web サーバー (Cassini) を使用して実行することはできません。モジュール構成を web.configのsystem.web要素に移動しようとしましたが、うまくいきませんでした。ブレークポイントを設定しましたが、何も起こりません。

なぜこれが問題になるのかについて何か考えはありますか?

(また、global.asax で Application_BeginRequest イベントを試しました。まだうまくいきませんが、とにかくすべてを web.config に保持したいと思います。)

4

3 に答える 3

41

Cassini、IIS で提供される開発用 Web サーバーは IIS6 モジュール構文を使用するため、モジュールの追加を次のように複製する必要があります。

<system.web>
  <httpModules>
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
  </httpModules>
</system.web>


<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="MinimizeModule" />
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>

IIS7 設定に前提条件も追加したことに注意してください。

于 2009-06-08T09:01:44.663 に答える
2

IIS 7 で実行している場合は、モジュールを次の場所に配置します。

<configuration>
   <system.webServer>
      <modules>
         <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
      </modules>
   </system.webServer>
</configuration>

Cassini (Visual Studio の統合小型 Web サーバー) で実行している場合は、モジュールを次の場所に配置します。

<configuration>
   <system.web>
      <httpModules>
          <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
   </system.web>
</configuration>

Cassini の場所を指定すると、IIS がクラッシュします。
Cassini は、IIS の場所を指定するとクラッシュします。

展開するときはいつでも、展開しないようにする必要がありweb.configます。にメモも含めますweb.config

<system.web>
   <!--The Cassini location to add modules (comment out for IIS)-->
   <httpModules>
      <!--WARNING: IIS will crash if you leave this in here.
          IISBUG: IIS doesn't support system.web/httpModules, 
          and Cassini doesn't support system.webServer/modules
      -->
      <!--Comment out for IIS-->
      <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
   </httpModules>
</system.web>

<system.webServer>
   <!--The IIS7 location to add modules (comment out for Cassini)
   <modules runAllManagedModulesForAllRequests="true">
      <!--IIS7 will crash if you present a system.web httpModules. -->
      <remove name="PerformanceHttpModule" />
      <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
   </modules>
</system.webServer>

IIS の左手は、カッシーニの右手が何をしているのかを知りません。

于 2015-01-09T16:20:37.697 に答える
0

要素にモジュール宣言も入れてみましたか? Cassini を使用して dev で実行する場合、通常はモジュールを実行するためにモジュールを配置する必要があります。

于 2009-06-08T08:41:28.837 に答える