问题标签 [integrated-pipeline-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 自安装 VS 2012 以来,我遇到了间歇性 PlatformNotSupportedException
我最近安装了 VS 2012 和 .net Framework 4.5,一切正常,只是偶尔会报错:此操作需要 IIS 集成管道模式。
我当然有托管管道模式:集成在 IIS 中。
自定义跟踪侦听器非常简单。
这真的很奇怪,因为如果我只是点击刷新它会继续没有任何问题。
任何帮助将不胜感激,谢谢。
c# - IIS 集成管道模式与`Server.TransferRequest("Form2.aspx");`
我有这样一行C#
代码:
我在 IIS 7 上运行它没有问题,但是当我使用 Visual Studio 2012(使用它的内部服务器,用于调试或类似的东西)运行我的代码时,我得到一个异常:
我应该怎么办?
.net - 当路径不存在时,IIS 7 集成处理程序不匹配
我正在从经典升级到集成。我将我的 web.config 处理程序升级到了新的部分。但是没有任何效果,所以我开始了一个全新的 MVC 4 项目,创建了一个处理程序,在 web.config 中注册它,如果路径不存在,它永远不会触发。
此处理程序获取 url,找到不同的文件,并将该文件与自定义标头一起写入输出流。
例如我正在尝试做:
当我直接转到处理程序时,很好,当我转到 IIS 并查看已注册的处理程序时,它就在那里,但是当我转到 url localhost/something.gif 时,我得到一个 404。
我有一种感觉 IIS 会在提交文件之前检查文件是否存在。
那么如何让处理程序接受所有 gif,即使它们不存在?
internet-explorer - 访问会话时,IE 双回发在集成托管管道模式下挂起 IIS 7
这是我的环境:Win 7 上的 IIS7.5、.NET 4、App Pool Integrated
网络配置
测试.aspx
是的,多次回发是故意的,我们注意到这种行为会导致许多请求卡在 RequestAcquireState 中,并最终阻止服务器接受任何新请求。但是,这个问题只能在 IE 下观察到,而在 Chrome 或 FF 上是看不到的。
要进行测试,请连续单击多次回发按钮。这将更新状态编号。然后,您将能够观察到在使用 IE 时该数字停止增加,表明请求卡住的问题。
我能够使用以下 IIS 和 IE 版本产生此问题:
测试的 IIS 版本
- 安装了 .Net 4.5 的 Windows Server 2008 R2 上的 7.5.7600.16385
- 安装了 .Net 4.5 的 Windows 7 Pro 上的 7.5.7600.16385
IE版本测试
- Windows 7 Pro 上的 9.0.8112.16421
- Windows Server 2008 R2 上的 8.0.7600.16385
- Windows Server 2003 SP2 上的 6.0.3790.3959
我观察到的异常情况是,当访问本地 IIS 时,Windows Server 2008 R2 上的 8.0.7600.16385 不会导致此阻塞问题。但是,如果我使用浏览器访问远程 IIS,则可以重现该问题。在 IE 9 上,无论 IIS 是在远程还是本地,我都可以重现该问题。
这是工作进程请求列表中挂起请求的屏幕截图。
现在我们找到了一些解决这个问题的方法,但在我们的情况下没有一个是可以接受的:
- 删除/注释掉会话使用情况。
- 将应用程序池更改为经典模式。
注意:我们还发现,即使我们不直接使用示例中的Session,问题仍然存在。IE:如果我们添加一个 Global.asax.cs 并添加一个空的 Session_Start 事件处理程序,请求仍然会在 RequestAcquireState 中挂起。
有谁知道为什么会发生这种情况,我们如何解决这个似乎只在集成托管管道模式下发生的问题?
iis - IIS 7.5 强制 http 标头 CacheControl 为 Private
在我的 .NET 代码中,我有一个处理 Http 请求的自定义处理程序,并且在 ProcessRequest 方法中调用一个自定义 HttpModule 来设置 Http 缓存标头。
HttpModule 使用以下代码在 PreSendRequestHeaders 方法中设置标头
在 IIS 7.5 中,池处于集成模式时,CacheControl 被强制为私有。这是我得到的:
我不明白为什么 IIS 将 CacheControl 更改为私有。
这是我的 web.config 中的网络服务器部分:
我尝试添加此处提到的SetSlidingExpiration Cache.SetMaxAge 在 IIS 下无法正常工作,在 VS Dev Srv 下可以正常工作,但没有帮助。
asp.net-mvc-3 - 如何在 MVC3 应用程序的 OnApplicationStarted 中获取应用程序根目录(完整物理路径)?
直到现在我使用:
但是今天我将我的应用程序从 IIS6 移动到 IIS7 并且我得到“请求在此上下文中不可用”异常。这是由于 IIS7 中的集成模式管道。我不想进入经典模式,所以我正在寻找一种不同的方式来获取应用程序路径(即“C:\SVN\L2E\trunk\Website”)。
有谁知道如何获得我的 MVC3 应用程序的完整物理路径?
asp.net - asp.net 4.0 和 asp.net 4.0 集成管道有什么区别?
在网络主机/网站设置面板中环顾四周时,我遇到了这个
我什么时候会选择管道选项而不是非管道选项?
asp.net - 订阅 HttpModules 中的 HttpApplication 事件在集成模式和经典模式之间表现不同
HttpApplication
我注意到同一实例引发的事件以及在初始化期间HttpModules
订阅同一事件处理程序的事件有一些奇怪的行为,这在 IIS 7 中的IntegratedMode和ClassicMode之间(至少到版本 8)。
似乎当您的模块在其方法中为给定HttpApplication
实例订阅事件处理程序时,在IntegratedMode中运行时,与订阅事件相关的 C# 规则不再适用,至少在引发事件时是如此。Init()
通常当您进行这样的订阅时
保证您SomeMethod
只订阅一次,因此当httpApplication's EndRequest
引发时,您的方法只会被调用一次。
当然如果SomeMethod
是一个实例方法并且你有多个实例,那么每个实例都会调用它的方法,这是正常的。但是如果你有一个静态方法,那么无论有多少不同的实例订阅同一个静态方法,SomeMethod
它都应该只被调用一次。
HttpModule
当您有多个实例订阅同一静态方法到同一实例的同一事件时,情况似乎并非如此HttpApplication
,同时在IntegratedMode下运行
如果您反编译HttpApplication
代码,那么您会看到每个事件订阅实际上都转换为 IIS 中的某些通知(至少在IntegratedMode中运行时)。这一切都很好,但我觉得他们假设在方法HttpApplication
期间附加到实例事件的每个事件处理程序都应该是特定的实例方法,这至少可以说是奇怪的吗?Init()
HttpModule
HttpModule
您将在下面找到一个尽可能小的复制样本,以清楚地反映这个问题。我不是在寻找其他方法来创建示例(绕过问题、重构代码……),它只是用最少的代码和设置重现了问题。
所以我的问题是:
这种奇怪的行为是设计使然还是他们忽略了/错误?还是我对订阅做出了错误的假设?
重现步骤
创建一个名为IssueDemo的空 Web 应用程序项目,并在其中包含以下文件
添加一个空的 Index.aspx 页面(我使用的是网络表单页面,但 MVC 也存在同样的问题......)
添加包含以下内容的 Modules.cs 文件
/li>调整 web.config 文件以反映以下内容(如果您没有将项目命名为IssueDemo ,请注意程序集引用)
/li>在 ClassicMode 下运行它(您可以使用内置的 VS Development Server 或为您的应用程序选择 IIS 中的Classic .Net AppPool)。您将在浏览器中看到以下消息:
trace.log文件将显示以下内容(我删除了 favicon.ico 的条目,并且实例ID会有所不同):
这基本上是我在为同一个
HttpApplication
实例订阅相同的静态方法时所期望的(#11543392)。在 IntgratedMode 下运行它(你不能使用内置的 VS 开发服务器,但你可以使用 IISExpress 或带有DefaultAppPool的普通 IIS )。您现在将在浏览器中看到以下消息:
并且trace.log文件将显示以下内容(我删除了 favicon.ico 的条目和其他 httpApplication 实例的创建,并且实例ID会有所不同):
当为同一个实例订阅同一个静态方法时,这不是我所期望的
HttpApplication
(#36181605)。您会看到同一请求的重复执行 (#63238509),并且由于仅附加了事件处理程序,因此我可以得出的唯一结论是该事件被引发了两次。顺便说一句,如果您添加更多派生类型并在 web.config 中注册它们,您会看到重复项会增加(但仅在 IntegratedMode 中)。
如果有人能回答这个问题,那就太好了。与此同时,我已经通过检查我们的代码是否已经在特定请求期间执行来解决这个问题。
asp.net - 用于 asp.net 的 IIS 7.5 集成管道过滤器请求
我可以以某种方式仅向 ASP.NET 部分发送与某些模式匹配的请求吗?例如使用正则表达式简单*.mvc
或更复杂/\d+[.]mvc/i
?
system.webServer
我的下面有下一行web.config
asp.net - 使用 Config.Current.Pipeline.Rewrite 是在热链接文件上实现水印的最有效方法吗?
我在集成模式下在 iis7 上运行 ImageResizer。我只是想确保我不会在 Application_Start 中使用此代码引入不必要的开销。当请求不是来自我的域(例如热链接文件或 Googlebot 或 Pinterest 等)时,此处的目的是为某些图像加水印(基于文件夹,然后基于大小):
编辑/解决方案:对于工作代码,第三行应该是:
这将为 1) 直接访问或 2) 在外部站点的页面中引用的图像添加水印。阿门。
谢谢,约翰