使用HTTP模块时出错 - 检测到的ASP.NET设置不适用于集成管理管道模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用HTTP模块时出错 - 检测到的ASP.NET设置不适用于集成管理管道模式相关的知识,希望对你有一定的参考价值。

启动应用程序时出错。

An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.

我创建了一个HTTP模块,它从请求头读取信息并将数据写入cookie。这是代码。

namespace My.Web
{
    public class UserIdModule : IHttpModule
    {
        private HttpApplication httpApp;

        public void Init(HttpApplication application)
        {
            application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
        }


        private void Application_BeginRequest(Object source, EventArgs e)
        {
            // Create HttpApplication and HttpContext objects to access
            // request and response properties.
            HttpApplication application = (HttpApplication)source;
            HttpContext context = application.Context;

            //Read header
            string userId = context.Request.Headers["user_id"];

            if (string.IsNullOrEmpty(userId))
            {
                userId = "guest";
            }

            //Create and write cookie
            HttpCookie userCookie = new HttpCookie("userId", userId);
            userCookie.Expires = DateTime.Now.AddYears(5);  
            context.Response.Cookies.Add(userCookie);
        }

        public void Dispose() { }
    }
}

在我的web.config中

<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".*" mimeType="application/octet-stream" />
    </staticContent>
    <!-- To register the module for IIS 6.0 and IIS 7.0 running in Classic mode -->
    <modules>
      <add name="UserIdModule" type="UserIdModule"/>
    </modules>
  </system.webServer>
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <!-- To register the module for IIS 7.0 running in Integrated mode -->
    <httpModules>
      <add name="UserIdModule" type="UserIdModule"/>
    </httpModules>
  </system.web>
</configuration>

这是错误的屏幕截图:

答案

我认为您可能已经颠覆了集成模式和经典模式 - 至少从配置文件中的注释看起来是这样。

system.web用于较旧的Classic模式,system.webserver用于集成模式。请参阅以下SO answer以供参考。

如果你有一些配置设置通常属于另一个我可以看到你收到此错误。

另一答案

你可以试试IIS 7.5吗?

<system.webServer>
    <modules>
       <add name="UserIdModule"  type="My.Web.UserIdModule"/>
    </modules>
</system.webServer>

以上是关于使用HTTP模块时出错 - 检测到的ASP.NET设置不适用于集成管理管道模式的主要内容,如果未能解决你的问题,请参考以下文章

将正确的标头值发送到从角度 $http 到 asp.net webapi 的 Preflight 请求时出错

尝试在 ASP.Net MVC 网站中启用 CORS 时出错

尝试在 Plesk Onyx 17.8.11 上托管 ASP.NET 2.2 网站时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败

尝试在 asp.net 中创建 json Web 服务时出错

将 Asp.net 应用程序部署到 IIS 服务器时出错

在 Asp.Net 中使用 Office365 SMTP 时出错