【问题标题】:Http modules integrated into IIS 7 processing pipeline集成到 IIS 7 处理管道中的 Http 模块
【发布时间】:2010-10-25 23:31:40
【问题描述】:


Q1 -IIS7 默认自动注册 FormsAuthenticationModule(在根 web.config 文件中定义),但术语“Http 模块被集成到IIS 7 处理管道是指”仅适用于此注册模块也配置为与非 Asp.Net 应用程序一起使用的情况?

在我看来,如果模块未配置为与非 Asp.Net 应用程序一起使用,即使它是由 IIS 7 自动注册的,那么我们也不能真正声称它已集成到 IIS 7 的处理管道中?!


第二季度

A) IIS7 自动注册在根 web.config 文件中定义的一些模块。 如果我们配置(通过 IIS7 管理器)UrlAuthorizationModule(在根 web.config 中定义并且 IIS 7 默认注册)以与非 Asp.Net 应用程序一起使用同样,然后 IIS7 将以下条目放入应用程序的根 web.config 文件中:

  <modules>
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" />


但为什么 IIS 7 还包含 &lt;remove name="UrlAuthorization" /&gt; 元素?


B) 我假设如果我们改变主意并决定仅将此模块用于 Asp.Net 应用程序,我们可以安全地删除以下元素:

<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" /> 

来自应用程序的根 web.config 文件,因为现在我们的应用程序可以使用根 web.config 中定义的 UrlAuthorizationModule 了?!


第三季度

我实现 IIS7 默认注册 FormsAuthenticationModule 定义在根 web.config 文件中,但假设我们在 web 中注册另一个 FormsAuthenticationModule .config 包含在某些 Web 应用程序的根目录中。

  • 我假设收到网页请求时,将为该请求执行两个 FormsAuthenticationModule 实例?


感谢


编辑:


A1。

“集成”与“经典”处理管道是应用程序池的一个属性。可以将模块设置为仅在“集成”管道中运行是正确的。

我的问题是指集成模式下的 IIS 7。即,我的书使用术语“Http 模块被集成到 IIS 7 处理管道中参考”来描述自定义 Http 处理程序已注册到 IIS 7(以集成模式运行)的情况。但是它没有说明该术语是否指的是当这个注册的处理程序被配置为也可以与非 asp.net 应用程序一起工作时,或者当注册的 Http 处理程序被配置为只与 Asp.Net 应用程序一起工作时我们是否也使用这个术语?


A2。 B. 是的,您可以删除“删除”以及“添加”行。如果您将其更改回继承设置,这就是 GUI 将执行的操作。

但在我的情况下,IIS 7 不会删除

<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" /> 

从应用程序的根 web.config 文件中,它只是将 preCondition 属性的值改回 "managedHandler"


A3。如果您尝试添加 2 个具有相同“名称”属性的模块,我认为您会收到错误消息。如果你真的想要它在那里两次然后更改第二个的“名称”。

抱歉,我应该更具体一些,但我的问题是指两个模块名称不同的情况。

那么在这种情况下会有两个 FormsAuthenticationModule 实例在运行?


感谢

【问题讨论】:

    标签: c# asp.net iis authentication iis-7


    【解决方案1】:

    刚刚注意到您正在使用 Stackoverflow。请在 iis.net 上查看我的最新答案。

    http://forums.iis.net/t/1157580.aspx

    重要的是 applicationHost.config 和 root web.config 实际上仍然具有不同的含义,因此如果一个项目出现在两个文件中,请不要混淆。这实际上有不同的含义。

    【讨论】:

      【解决方案2】:

      A1。 “集成”与“经典”处理管道是应用程序池的一个属性。可以将模块设置为仅在“集成”管道中运行是正确的。

      A2。 A. 为了改变“preCondition”属性,它必须删除第一个版本并重新添加。

      A2。 B. 是的,您可以删除“删除”以及“添加”行。如果您将其更改回继承设置,这就是 GUI 将执行的操作。

      A3。如果您尝试添加 2 个具有相同“名称”属性的模块,我认为您会收到错误消息。如果你真的想要它在那里两次然后更改第二个的“名称”。

      【讨论】:

      • 大卫,您也可以在 iis.net 论坛上查看我的答案,因为这确实是一个需要研究的复杂案例。 :)
      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 2010-10-10
      • 1970-01-01
      • 2011-06-24
      • 2017-10-10
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多