我有 ARR 和 WIF 的经验。我必须熟悉 IIS 7.5 如何处理本机代码和托管代码。我假设您在集成模式下运行您的应用程序池,否则其余部分将不适用。
由于不了解有关问题的所有详细信息,因此很难知道,但您可能遇到与托管代码与本机/非托管代码相关的配置问题。ARR 是一个原生的 http 模块。它与 URLRewrite http 模块结合使用,以允许从后端 Web 服务器提供内容。
默认情况下,IIS 不会为任何由本机处理程序(例如 ARR)处理的请求运行托管http 模块。若要将 IIS 配置为针对由本机处理程序(例如 WIF 或其他托管 .NET 代码)处理的内容运行托管模块,您必须将 IIS 配置为运行托管代码而不管处理程序如何。最简单的方法是在 system.webServer\modules 元素中设置 runAllManagedModulesForAllRequests="true"。您还可以通过将前提条件设置为“”来选择性地启用单个模块以覆盖默认的 IIS 行为:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="" />
<add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="" />
</modules>
问候