标签: integrated-pipeline-mode

IIS7中的"经典"和"集成"管道模式有什么区别?

我昨晚部署了一个ASP.NET MVC应用程序,并发现将IIS7设置为集成模式进行部署的工作量较少.我的问题是有什么区别?使用一个或另一个有什么含义?

asp.net iis asp.net-mvc iis-7 integrated-pipeline-mode

483
推荐指数
4
解决办法
27万
查看次数

"此操作需要IIS集成管道模式."

我有一个在Windows 8.1,.net 4.5.1,IIS 8.5(在集成AppPool下),Visual Studio 2013上开发的Web应用程序,在默认模板上包含asp.net Identity,Owin等,并且本地工作正常.

然后我将它上传到Windows Server 2008和IIS 7.5(集成管道)主机,我得到:

此操作需要IIS集成管道模式.

异常详细信息: System.PlatformNotSupportedException:此操作需要IIS集成管道模式.

堆栈跟踪:

[PlatformNotSupportedException:此操作需要IIS集成管道模式.] System.Web.HttpResponse.get_Headers()+ 9687046 System.Web.HttpResponseWrapper.get_Headers()+9 Microsoft.Owin.Host.SystemWeb.OwinCallContext.CreateEnvironment()+309 Microsoft .Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.GetInitialEnvironment(HttpApplication application)+246 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.PrepareInitialContext(HttpApplication application)+15 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent (Object sender,EventArgs e,AsyncCallback cb,Object extradata)+265 System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+285 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+155

我已经搜索了很多,但除了指示读者将管道从经典模式更改为集成模式之外我无法找到任何内容,而我已经没有运气了.

我该怎么做才能解决问题?"Microsoft.Owin.Host.SystemWeb"不是像IIS 7.5,还是服务器2008或我:)?

asp.net iis integrated-pipeline-mode

55
推荐指数
6
解决办法
11万
查看次数

IIS7集成与经典管道 - 使用更多的ASP.NET线程?

使用集成管道,所有请求都通过ASP.NET传递,包括图像,CSS.

然而,在传统的管道中,默认情况下只对ASPX页面的请求通过ASP.NET传递.

集成管道会对线程使用产生负面影响吗?

假设我从IIS服务器请求500 MB二进制文件:

  • 使用集成管道,ASP.NET工作线程将用于二进制下载(对吗?).
  • 使用经典管道,请求由IIS直接提供,因此不使用任何ASP.NET线程.

对我来说,这有利于传统的管道,因为我希望尽可能多的线程来提供ASPX页面.

我完全不在这里吗?

asp.net iis iis-7 pipeline integrated-pipeline-mode

22
推荐指数
1
解决办法
2万
查看次数

使用集成管道模拟域用户

这个问题一直困扰着我......

在本地Intranet环境中,如果我们想要使用模拟我们的Windows域用户,我们注定要在我们的应用程序池中使用"经典"管道模式,或者是否有一种新的方式来声明性地"运行"它们(可以这么说) )?

我的目标是在我的Intranet上对本地Web应用程序使用Windows身份验证,以便用户可以在其活动目录帐户下进行身份验证和运行应用程序(原则).每次我尝试这个(当然使用NetworkService身份),我都会收到此错误:

在此输入图像描述

谢谢!;)

impersonation windows-authentication integrated-pipeline-mode iis-7.5 windows-server-2008-r2

21
推荐指数
2
解决办法
2万
查看次数

当访问会话时,IE双回发会在集成管理管道模式下挂起IIS 7

这是我的环境:Win 7上的IIS7.5,.NET 4,App Pool Integrated

web.config中

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Test.aspx文件

<%@ Page Language="C#" %>

<!DOCTYPE html>
<script runat="server">
    protected void OnAction(object sender, EventArgs e)
    {
        int count;
        status.Text = (int.TryParse(status.Text, out count) ? count + 1 : 0).ToString();

        Session["test"] = count;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>IIS Session Hang Test</title>
    <script>
        var mutiPostback = function () {
            var e = document.getElementById('LinkButton1');
            e.click();
            e.click();
        };
    </script>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <asp:ScriptManager runat="server" ID="SM">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" …
Run Code Online (Sandbox Code Playgroud)

internet-explorer iis-7 session-state integrated-pipeline-mode

20
推荐指数
3
解决办法
8178
查看次数

检查是否在集成管道模式下

是否可以检查我们的代码是否在集成管道模式下执行?

有一些ASP.NET类属性只能在集成管道模式下工作,如果有办法测试我们的代码是否在该环境中执行,我想避免引发异常.

asp.net iis iis-7 integrated-pipeline-mode

19
推荐指数
1
解决办法
3530
查看次数

HttpModule.Init - 在IIS7集成模式下安全地添加HttpApplication.BeginRequest处理程序

我的问题类似但不完全相同:

为什么我的主机(softsyshosting.com)不支持BeginRequest和EndRequest事件处理程序?(我也读过其中引用的mvolo博客)

目标是成功地在IHttpModule.Init事件(或模块内部的任何地方)中挂钩HttpApplication.BeginRequest,使用通过system.webServer配置集成的普通HttpModule,即不会:

  1. 入侵Global.asax或
  2. 覆盖HttpApplication(该模块旨在自包含和可重用,所以例如我有这样的配置):

    <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="TheHttpModule" />
      <add name="TheHttpModule" type="Company.HttpModules.TheHttpModule" preCondition="managedHandler" /> 
    
    Run Code Online (Sandbox Code Playgroud)

到目前为止,我试图将一个监听器附加到HttpApplication.BeginRequest的任何策略都会产生以下两种情况之一:症状1是BeginRequest永远不会触发,或者症状2是所有托管请求都抛出以下异常,我不能从用户代码中捕获并处理它:

Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30
System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616
Run Code Online (Sandbox Code Playgroud)

app.BeginRequest += new EventHandler(this.OnBeginRequest)在Init中注释会停止例外.Init根本不引用Context或Request对象.

我试过了:

  • 在项目的任何位置删除对HttpContext.Current的所有引用(仍然是症状1)
  • 测试从我的OnBeginRequest方法的主体中删除所有代码,以确保问题不在方法的内部(=异常)
  • 嗅探堆栈跟踪并仅调用app.BeginRequest + = ...如果堆栈未由InitializeApplication启动(= BeginRequest未激活)
  • 仅在第二次通过Init时调用app.BeginRequest + =(= BeginRequest未触发)

有人知道一个好方法吗?在模块中挂钩Application_Start是否存在一些间接策略(似乎不太可能)?另一个事件:a)可以从模块的构造函数或Init方法挂钩,以及b)随后是附加BeginRequest事件处理程序的安全位置?

非常感谢

c# iis-7 httpmodule integrated-pipeline-mode

12
推荐指数
1
解决办法
8270
查看次数

为了继续使用identity impersonate = true,设置validateIntegratedModeConfiguration = false是否安全?

我们已将ASP.NET Web应用程序从IIS6升级到IIS7集成模式.我们的应用使用:

<identity impersonate="true"/>
Run Code Online (Sandbox Code Playgroud)

因此我们不得不设置:

<validation validateIntegratedModeConfiguration="false" />
Run Code Online (Sandbox Code Playgroud)

这是明智的吗?我的直觉说不是,但在谷歌搜索这个问题,这个"解决方法"建议在每个访问过的页面上.

模拟IIS7不再是一个很好的做法,我们应该放弃它并提出不同的解决方案吗?

asp.net impersonation iis-7 iis-6 integrated-pipeline-mode

12
推荐指数
1
解决办法
2万
查看次数

IIS7集成管道:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互

首先,有一个很好的概述IIS7 HTTP请求生命周期和影响性能的各种设置:

IIS 7.0和6.0上的ASP.NET线程使用情况

但非常具体,在dotNet 4中,maxConcurrentRequestsPerCPUrequestsQueueLimit的默认值设置为5000.例如,相当于:(在aspnet.config中):

<system.web>
   <applicationPool 
      maxConcurrentRequestsPerCPU="5000" 
      maxConcurrentThreadsPerCPU="0" 
      requestQueueLimit="5000" /> (** see note below)
</system.web>
Run Code Online (Sandbox Code Playgroud)

在我看来,在多CPU /核心服务器上,在'perCPU'限制之前,始终会调用requestQueueLimit.因此,如果每个CPU最多需要5000个请求,那么我希望requestQueueLimit需要增加到5000*CPUCount或者只是完全禁用.

我的解释是否正确?如果是这样,我可以禁用requestQueueLimit吗?(将其设为零?).关于此设置的文档似乎没有解决这个问题(所以我可能会遗漏某些内容或误读?)

**上述文章的旁注:requestQueueLimit命名不佳.它实际上限制了ASP.NET可以同时处理的最大请求数.这包括排队的请求和正在执行的请求.如果"请求当前"性能计数器超过requestQueueLimit,则将拒绝新的传入请求,并显示503状态代码)

asp.net iis iis-7 asp.net-2.0 integrated-pipeline-mode

11
推荐指数
1
解决办法
8972
查看次数

如何在MVC3应用程序中的OnApplicationStarted中获取应用程序根(完整物理路径)?

直到现在我用过:

Dim appPath = HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath)
Run Code Online (Sandbox Code Playgroud)

但今天我将我的应用程序从IIS6移动到IIS7,我得到"请求在此上下文中不可用"异常.这是由于IIS7中的集成模式管道.我不想进入经典模式,所以我正在寻找一种获取应用程序路径的不同方式(即"C:\ SVN\L2E\trunk\Website").

有谁知道如何获得我的MVC3应用程序的完整物理路径?

iis-7 path integrated-pipeline-mode asp.net-mvc-3

9
推荐指数
2
解决办法
1万
查看次数