首页 > C# >  C# 检测到在集成托管管道模式下不应用的 ASP.NET 设置

 C# 检测到在集成托管管道模式下不应用的 ASP.NET 设置

上一篇 下一篇

我安装了DotNetOpenAuth SDK-3.4.5.10201.vsix,但我无法让它工作。它在本地工作(当我以本地主机运行时),但是当我尝试发布它不起作用时。

我收到的 IIS 错误消息是:

错误摘要
HTTP 错误 500.22 – 内部服务器错误
检测到 ASP.NET 设置不适用于集成托管管道模式。

和:

Module       ConfigurationValidationModule  
Notification BeginRequest  
Handler      StaticFile  
Error Code   0x80070032  

然后有一些关于如何解决问题的建议:

您可以尝试的操作:

  • 将配置迁移到该
    部分。您可以
    手动执行此操作,也可以从命令行使用 AppCmd
    执行此操作,例如
    .
    使用来迁移
    应用程序将使它能够在
    集成模式下工作,并继续在经典模式和以前
    版本的 IIS 上工作
    system.webServer/modules%SystemRoot%system32inetsrvappcmd migrate config "Default Web Site/"AppCmd
  • 如果您确定可以
    忽略此错误,可以通过设置为
    false 来禁用
    它。
    system.webServer/validation@validateIntegratedModeConfiguration
  • 或者,将应用程序切换到经典模式应用程序
    池,
    例如
    。仅当
    无法迁移应用程序时才执行此操作。
    (将“默认网站”和“经典 .NET 应用程序池”设置为应用程序路径和应用程序池名称)
    %SystemRoot%system32inetsrvappcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"

问题是我无法访问 ISS 服务器,因为我不是它的所有者。有什么办法可以解决这个问题吗?

分割线

网友回答:

第二个选项是您想要的选项。

在 中,请确保以下键存在:web.config

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

分割线

网友回答:

添加可解决症状,但并非适用于所有情况。在绕开这个问题几次之后,我希望帮助其他人不仅克服这个问题,而且理解它。(随着 IIS 6 逐渐消失在神话和谣言中,这一点变得越来越重要。<validation validateIntegratedModeConfiguration="false"/>

背景:

这个问题和围绕它的困惑始于 ASP.NET 2.0和IIS 7的引入。IIS 6 过去和现在都只有一种管道模式,它相当于 IIS 7+ 所说的“经典”模式。对于在 IIS 7+ 上运行的所有应用程序,第二种较新的建议管道模式称为“集成”模式。

那么,有什么区别呢?主要区别在于 ASP.NET 如何与 IIS 交互。

  • 经典模式仅限于无法与 IIS 管道交互的 ASP.NET 管道。本质上是一个请求,如果通过服务器配置告知 IIS 6/Classic,ASP.NET 可以处理它,则 IIS 将请求交给 ASP.NET 并继续。这可以从一个例子中收集到其意义。如果我要授权访问静态图像文件,我将无法使用 ASP.NET 模块执行此操作,因为 IIS 6 管道将自行处理这些请求,ASP.NET 永远不会看到这些请求,因为它们从未被移交。 另一方面,授权哪些用户可以访问 .ASPX 页面(如 Foo.aspx 请求)即使在 IIS 6/Classic 中也是微不足道的,因为 IIS 总是将这些请求传递给 ASP.NET 管道。在经典模式下,ASP.NET 不知道它没有被告知什么,并且有很多 IIS 6/Classic 可能没有告诉它。
  • 建议使用集成模式 ASP.NET 因为处理程序和模块可以直接与 IIS 管道交互。IIS 管道不再只是将请求移交给 ASP.NET 管道,现在它允许 ASP.NET 代码直接挂接到 IIS 管道以及命中它的所有请求。这意味着 ASP.NET 模块不仅可以观察对静态图像文件的请求,还可以拦截这些请求并通过拒绝访问、记录请求等方式采取行动。

克服错误:

  1. 如果您运行的是最初为 IIS 6 构建的较旧的应用程序,也许您将其移动到新服务器,则在经典模式下运行该应用程序的应用程序池可能绝对没有问题。来吧,你不必感到难过。
  2. 然后,也许您正在对您的应用程序进行改头换面,或者它一直很好,直到您通过 NuGet、手动或其他方式安装第 3 方库。在这种情况下,完全有可能或已被添加到 中。结果是您看到的错误,因为默认值 .现在您有两个选择:httpHandlershttpModulessystem.webvalidateIntegratedModeConfigurationtrue
    1. 从 中删除 和 元素。这有几个可能的结果:httpHandlershttpModulessystem.web
      • 一切正常,这是一个常见的结果;
      • 您的应用程序继续抱怨,您从中继承的父文件夹中可能存在 web.config,请考虑也清理该 web.config;
      • 你厌倦了删除 NuGet 包不断添加到 ,嘿,做你需要做的事情。httpHandlershttpModulessystem.web
  3. 如果这些选项不起作用或比它的价值更麻烦,那么我不会告诉你你不能设置为 ,但至少你知道你在做什么以及为什么它很重要。validateIntegratedModeConfigurationfalse

好读:

  • ASP.NET IIS 2.0 上的 7.0 重大更改
  • ASP.NET 与 IIS 7 的集成
  • HTTP 处理程序和 HTTP 模块概述

*当然,如果您喜欢这种东西,可以通过通配符映射等咒语将各种奇怪的东西从 IIS 6/Classic 放入 ASP.NET 管道中。

分割线

网友回答:

如果仍需要使用 HTTP 模块,则需要对其进行配置(.NET 4.0 框架),如下所示:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <add name="MyModule" type="[Namespace].[Class], [assembly]"/>
   </modules>
   <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

模板简介:该模板名称为【 C# 检测到在集成托管管道模式下不应用的 ASP.NET 设置】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 273次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-22
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
响应式 单页式简历模板 微信公众平台 html5 微信模板 微信素材 自适应 微信文章 企业网站 微信图片
您可能会喜欢的其他模板