标签: integrated-pipeline-mode

用于IIS 7的自定义HttpModule集成

我遇到了我构建的自定义错误处理程序的麻烦.它应该是a HttpModule,但当我将它添加到我web.configsystem.webServer/modules标签时,它不会被启动.

这是我的web.config部分:

<system.webServer>
  <modules>
    <add name="AspExceptionHandler" 
         type="Company.Exceptions.AspExceptionHandler, Company.Exceptions" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

这是我的代码HttpModule:

using System;
using System.Web;
using Company.Settings;
using System.Configuration;

namespace Company.Exceptions
{
  public class AspExceptionHandler : IHttpModule
  {
    public void Dispose() { }

    public void Init(HttpApplication application)
    {
      application.Error += new EventHandler(ErrorHandler);
    }

    private void ErrorHandler(object sender, EventArgs e)
    {
      HttpApplication application = (HttpApplication)sender;
      HttpContext currentContext = application.Context;

      // Gather information5
      Exception currentException = application.Server.GetLastError();
      String errorPage = …
Run Code Online (Sandbox Code Playgroud)

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

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

如何以编程方式检测我的应用程序是否在ASP.NET页面中的IIS 7.0集成模式下运行

通常我们应该控制我们的AppPools并能够强制管理管道模式.在我的情况下,我没有控制权,并希望根据托管流水线模式(集成与经典)实现代码背后的代码.我只是不知道如何检测到这一点.有没有一种简单的方法可以在页面后面的代码中执行此操作?

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

7
推荐指数
2
解决办法
2528
查看次数

集成管道模式:上传超过2GB的文件

虽然我已将contentlength的限制设置为大约4GB,但最大值如下所示

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="4294967295">
    </requestLimits>
  </requestFiltering>
</security>

<httpRuntime targetFramework="4.5" requestValidationMode="2.0"
  requestPathInvalidCharacters="" maxRequestLength="5024000" executionTimeout="3600" />
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误

HTTP错误400.0 - 错误请求

ASP.NET在URL中检测到无效字符.

我找到了一个链接,提到了这种行为的原因

https://blogs.msdn.microsoft.com/friis/2013/06/19/uploading-large-file-to-iis-7-5-or-8-using-file-input-element/

如果应用程序在NET 4.5集成管道下运行,则上传将无法在2G以上运行,并且IIS将发送以下错误:"HTTP 400.0 - 错误请求ASP.NET在URL中检测到无效字符.".

当使用集成管道时,我们通过webengine代码(webengine4!MgdGetRequestBasics),它不支持超过2 GB的内容长度,并引发System.ArithmeticException异常,随后导致HTTP 400错误.使用经典管道,我们不使用webengine4,而是使用旧的ASPNET_ISAPI模型,我们没有遇到上述问题.

想在IIS 10和.net framework 4.5中询问它是否仍然有效.

有没有可以设置的设置来解决这个问题?

c# asp.net integrated-pipeline-mode .net-4.5 iis-10

7
推荐指数
0
解决办法
308
查看次数

IIS 7 - Windows身份验证无法正常工作

我们有几个使用Windows身份验证的Web应用程序在IIS6上运行良好.将它们部署到IIS7后,Windows身份验证不再有效(我们得到401.2错误)除非我们将Web应用程序设置为使用"经典管道"

我意识到这里这里提到的Forms auth和Windows Auth不是同时支持的- 但这不是我的问题 - 我没有启用表单身份验证.我只启用了Windows身份验证 - 但我总是得到401.2

有没有人碰到这个?我还需要做些什么吗?

谢谢!-麦克风

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

6
推荐指数
1
解决办法
8277
查看次数

将IIS从经典模式切换到集成模式时锁定和高CPU

在IIS 6中,我们曾经使用两个第三方组件进行Url Rewriting:Helicon(用于处理无扩展网址)和UrlRewriting.net.前段时间我们迁移到IIS 7 - 经典模式,仍然使用这两个组件.

现在我们尝试使用本机.Net路由切换到没有第三方组件的集成模式.路由工作正常,但我们的Web应用程序表现完全不同.我们的网络服务器曾经保持低于10%的CPU使用率,但现在很容易使用50%甚至更高.

我们已经开始分析内存转储,但似乎没有找到问题的根源.似乎.Net缓存机制正在阻止垃圾收集器?这与使用"集成模式"有什么关系?

您可以在下面找到我们分析的摘录.任何关于下一步的建议都将不胜感激.

> !analyze -v -hang
*****************************
*                                                        
*                        Exception Analysis    
*                                                        
*****************************

GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/00000000.htm?Retriage=1

FAULTING_IP: 
+aceb6a0
00000000`00000000 ??              ???

EXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  0000000000000022
BUGCHECK_STR:  HANG
PROCESS_NAME:  w3wp.exe
ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: …
Run Code Online (Sandbox Code Playgroud)

asp.net performance iis-7 memory-dump integrated-pipeline-mode

5
推荐指数
1
解决办法
2060
查看次数

处理程序在IIS7.5集成管道上返回404错误

<httpHandlers>
  <add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
  <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
  <remove verb="*" path="*.asmx" />
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)

我在集成模式下遇到了iis7.5的问题.当我在经典模式处理程序中使用它时,上面提到的工作正常,但如果我切换到集成管道 - 所有应该处理的请求返回404错误.为什么?

iis integrated-pipeline-mode

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

通过ASP.NET运行时将IIS7配置为服务器静态内容

我搜索得很高,仍然无法找到明确的答案.

如何在IIS中配置IIS 7.0 Web应用程序,使ASP.NET运行时将处理所有的请求-包括那些像静态文件*.js,*.gif等等?

我想要做的是如下.

我们有一种SaaSy网站,我们可以为每个客户"品牌化"."品牌"意味着开发自定义母版页并使用一堆*.css和其他图像.

很自然,我正在使用VirtualPathProvider,其运作方式如下:

public override System.Web.Hosting.VirtualFile GetFile(string virtualPath)
{
    if(PhysicalFileExists(virtualPath))
    {
        var virtualFile = base.GetFile(virtualPath);
        return virtualFile;
    }

    if(VirtualFileExists(virtualPath))
    {
        var brandedVirtualPath = GetBrandedVirtualPath(virtualPath);
        var absolutePath = HttpContext.Current.Server.MapPath(brandedVirtualPath);

        Trace.WriteLine(string.Format("Serving '{0}' from '{1}'", 
            brandedVirtualPath, absolutePath), "BrandingAwareVirtualPathProvider");

        var virtualFile = new VirtualFile(brandedVirtualPath, absolutePath);
        return virtualFile;    
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

基本思路如下:我们branding的webapp中有一个文件夹,其中包含每个"品牌"的文件夹,其中"品牌"等于主机名.也就是说,请求http://foo.example.com/应该使用静态文件branding/foo_example_com,而http://bar.example.com/应该使用来自的内容branding/bar_example_com.

现在我想要IIS做的是将所有请求转发到静态文件StaticFileHandler,然后使用整个"基础结构"并提供正确的文件.但是,尽我所能,我无法配置IIS来执行此操作.

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

4
推荐指数
1
解决办法
4802
查看次数

asp.net 4.0 和 asp.net 4.0 集成管道有什么区别?

在浏览虚拟主机/网站设置面板时,我遇到了这个 在此输入图像描述

我什么时候会选择管道选项而不是非管道选项?

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

4
推荐指数
1
解决办法
2089
查看次数

我可以告诉 IIS 8.5 在使用 httpErrors 时返回 404 吗?

我在 IIS 8.5 上运行的(Web 窗体)站点上工作,并且目前正在设置 404 和 500 的错误处理。

我已经有了system.web>customErrors设置,但是由于我们在集成模式/较新版本的 IIS 下运行,因此它是从system.webServer> 中提取的httpErrors

使用 IIS GUI,我选择在站点上用静态 HTML 文件替换标准 IIS 错误页面:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath=""
        path="/problem.html" responseMode="ExecuteURL" />
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" prefixLanguageFilePath=""
        path="/problem.html" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然显示了正确的错误页面,但不是返回 404,而是返回 200,对于 500 个错误,返回 302 后跟 200。

对于旧版本的 IIS 或未在集成模式下运行的 IIS,您可以redirectMode="ResponseRewrite"customErrors元素上进行设置,这将解决此问题。

我试过设置existingResponsehttpErrors对所有三个可用的选项,以及尝试更新的设置responseMode="File",但这些什么也没有改变。

有没有办法对httpErrrors元素做类似的事情?或者我是否坚持将错误指向 ASP.NET 页面并从那里返回适当的错误? …

asp.net custom-errors integrated-pipeline-mode iis-8.5

4
推荐指数
1
解决办法
1339
查看次数

带有IIS7集成模式的静态内容角色的ASP.NET身份验证

我正在试验IIS7中静态内容的集成身份验证模式.我按照本文中的说明操作:http://aspnet.4guysfromrolla.com/articles/122408-1.aspx 如果我通过登录状态允许/拒绝访问(如文章中所述),它工作正常.但是,我想基于角色允许/拒绝访问(使用内置于角色提供程序中的ASP.NET).当我为web.config中的角色"Admin"设置允许规则并拒绝所有其他用户的规则时,即使我以管理员身份登录,我也无法访问静态文件.同一文件夹包含非静态内容(aspx页面),可根据角色提供程序信息进行访问.

有任何想法吗?

asp.net iis-7 integrated-pipeline-mode

3
推荐指数
1
解决办法
3004
查看次数

IIS7集成管道模式:对于Windows身份验证,Context.User间歇性地为空

我们的代码依赖于检查Global.asax Application_AuthenticateRequest(...)方法中的Context.User.Identity值来检索有关登录用户的一些信息.这在经典模式下工作正常但是当我翻转IIS以使用集成管道"Context.User"返回为null时,但只是间歇性地返回.有什么想法吗?

我有<authentication mode ="Windows">并且只在虚拟目录中启用了Windows Auth.

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

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

在httpmodule - IIS7中区分静态文件和asp.net页面

在IIS7集成模式下,特别是在ASP.NET MVC和.NET4中,所有模块都针对所有请求运行.runAllManagedModulesForAllRequests = "真".使runAllManagedModulesForAllRequests ="false"给我带来了很多问题,直到我感到困惑为止.

所以为了简单起见,让我的模块接受包括静态文件在内的所有请求,但是在像BeginRequest这样的模块中,我只想处理它不是静态文件.如何过滤或检查模块中的这种情况?

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

0
推荐指数
1
解决办法
1518
查看次数