3

私は非常に単純なカスタム認証を持っていHttpModuleます。しかし、マネージド リクエストに対してのみ実行したい (静的リクエストに対しては実行しない)。

Asp.net MVC は、IIS7 Web サーバーの構成セクションを自動的に追加します。

<system.webServer>
   <validation validateIntegratedModeConfiguration="false" />
   <modules runAllManagedModulesForAllRequests="true">
      <remove name="ScriptModule" />
      <remove name="UrlRoutingModule" />
      <add name="ScriptModule"
           preCondition="managedHandler"
           type="System.Web.Handlers.ScriptModule,..." />
      <add name="UrlRoutingModule"
           type="System.Web.Routing.UrlRoutingModule,..." />
   </modules>
   <handlers>
      ...
   </handlers>
</system.webServer>

独自のモジュールを追加すると、その も設定されますpreCondition="managedHandler"が、runAllManagedModulesForAllRequests="true"<module>要素があるため、 mypreConditionは設計上無視されます (MSDN で読んだように)。

私が設定しようとすると:

<modules runAllManagedModulesForAllRequests="false">

エラーが発生します。

web.configこの設定を機能させるには、他に何 (他のどのモジュール) を設定する必要がありますか?

<modules runAllManagedModulesForAllRequests="false">
4

2 に答える 2

3

アプリケーションが他のマネージド モジュール (Session) に依存していて、そのモジュールがマネージド ハンドラー (runAllManagedModulesForAllRequests="false") への要求に対してのみ実行されるように構成されていたため、エラー メッセージが表示されたと思います。

次の設定を試して、すべてのリクエストに対して実行するようにセッション モジュールを再構成することができます。

<modules>
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>
于 2009-07-22T10:12:03.237 に答える
2

Ok。したがって、これに対する回避策を備えたソリューションがあります。デフォルトのモジュール設定を次のように使用する必要がありました。

<modules runAllManagedModulesForAllRequests="true">

しかし、次のような特定の場所に追加の web.config エントリを設定することで、カスタム認証モジュールを無効にすることができました。

<location path="~/App_Themes">
    <system.web>
        <authentication mode="None" />
    </system.web>
</location>

<location path="~/Content">
    <system.web>
        <authentication mode="None" />
    </system.web>
</location>

<location path="~/Scripts">
    <system.web>
        <authentication mode="None" />
    </system.web>
</location>

そのため、特定のパスで認証を無効にしました。これは回避策であり、実際の解決策ではありません。runAllManagedModulesForAllRequests="true"そのため、既定の Asp.net MVC 構成に実際に対処する独自の提案やソリューションを提供することもできます。

于 2009-07-22T10:27:35.453 に答える