我安装了DotNetOpenAuth SDK-3.4.5.10201.vsix,但我无法使用它 . 它在本地工作(当我作为localhost运行时),但当我尝试发布它不起作用 .
我得到的IIS错误消息是
错误摘要HTTP错误500.22 - 内部服务器错误检测到的ASP.NET设置不适用于集成管理管道模式 .
和
Module ConfigurationValidationModule
通知BeginRequest
处理程序StaticFile
错误代码0x80070032
那么有一些关于如何解决问题的建议:
你可以尝试的事情:
将配置迁移到system.webServer / modules部分 . 您可以手动或通过命令行中的AppCmd执行此操作 - 例如,%SystemRoot%\ system32 \ inetsrv \ appcmd migrate config“默认网站/” . 使用AppCmd迁移应用程序将使其能够在集成模式下工作,并继续在经典模式和早期版本的IIS中工作 . 如果您确定可以忽略此错误,可以通过将system.webServer/validation@validateIntegratedModeConfiguration设置为false来禁用它 . 或者,将应用程序切换到经典模式应用程序池 - 例如,%SystemRoot%\ system32 \ inetsrv \ appcmd set app“Default Web Site /”/ applicationPool:“Classic .NET AppPool” . 只有在您无法迁移应用程序时才能执行此操作 . (将“默认网站”和“经典.NET AppPool”设置为您的应用程序路径和应用程序池名称)
但问题是我无法访问ISS服务器,因为我不是它的所有者 . 有什么方法可以解决这个问题吗?
11 回答
第二个选项是你想要的 .
在
web.config
中,确保存在以下键:我遇到了这个问题,但有一个不同的解决方案 . 它涉及更新
Control Panel>Administrative Tools>IIS Manager
并将我的应用程序站点的托管管道从Integrated
还原为Classic
.本地的方法是错误
添加
<validation validateIntegratedModeConfiguration="false"/>
解决了症状,但并不适合所有情况 . 我曾几次试过这个问题,希望能帮助别人解决问题但要理解它 . (随着IIS 6逐渐淡出神话和谣言,这变得越来越重要 . )背景:
这个问题以及围绕它的混乱始于ASP.NET 2.0和IIS 7的引入.IIS 6已经并且继续只有一个管道模式,它等同于IIS 7所谓的“经典”模式 . IIS 7上运行的所有应用程序的第二个,更新的和推荐的管道模式称为“集成”模式 .
那么,有什么区别?关键区别在于ASP.NET如何与IIS交互 .
建议使用
克服错误:
如果您运行的是最初为IIS 6构建的旧应用程序,也许您将其移动到新服务器,那么在经典模式下运行该应用程序的应用程序池可能绝对没有错 . 来吧你不必感到难过 .
然后再说一次,也许你正在给你的应用程序改头换面,或者它一直很好,直到你通过NuGet,手动或其他方式安装第三方库 . 在这种情况下,完全有可能
httpHandlers
或httpModules
被添加到system.web
. 结果是您看到的错误,因为validateIntegratedModeConfiguration
默认true
. 现在你有两个选择:从
system.web
中删除httpHandlers
和httpModules
元素 . 这有几个可能的结果:一切正常,共同的结果;
您的申请继续抱怨,你继承的父文件夹中可能有web.config,考虑清理那个web.config;
你厌倦了删除
httpHandlers
和httpModules
,NuGet包继续添加到system.web
,嘿做你需要的 .如果这些选项不起作用或者比它的 Value 更麻烦那么我'm not going to tell you that you can' t设置
validateIntegratedModeConfiguration
到false
,但至少你知道你在做什么以及它为何重要 .好读:
ASP.NET 2.0 Breaking Changes on IIS 7.0
ASP.NET Integration with IIS 7
HTTP Handlers and HTTP Modules Overview
*当然,如果您喜欢这种东西,有很多方法可以通过像wildcard mappings这样的咒语从IIS 6 / Classic中获取所有类型的奇怪内容 .
检查IIS身份验证中是否存在任何冲突 . 即,您启用匿名身份验证和ASP.NET模拟都可能导致错误 .
这对我有用:
删除最初创建的站点 .
在IIS中重新创建站点
清洁解决方案
构建解决方案
当我最初创建网站时,似乎有些事情发生了变化 . 我讨厌类似于“重启你的机器,然后重新安装Windows”的解决方案,而不知道导致错误的原因 . 但是,这对我有用 . 快速而简单 . 希望它可以帮助别人 .
我遇到了这个问题并受到@Jeremy Cook的回答的启发,我咬紧牙关找出了什么导致IIS 7集成模式不喜欢我的web.config . 这是我的情景:
Web API(版本4.0.030506.0又称旧版)
.NET 4.0
属性路由3.5.6 for Web API [剧透警报:这是这个人!]
我想在项目中使用属性路由(遗憾的是)必须使用.NET 4,因此无法使用Web API 2.2(需要.NET 4.5) . 好的NuGet包在
<system.web>
部分下添加了这一部分:[我说的很有意思,因为旧版本的IIS需要这部分]
删除此部分让我超越了HTTP 500.23 !!
Summary: 我的第二个杰里米's words that it is important to understand why things don'工作而不仅仅是"masking the symptom" . 即使您必须掩盖症状,您也知道自己在做什么(以及为什么):-)
在我的情况下,我在bin文件夹中丢失了dll,这是在web.config文件中引用的 . 因此,请检查您是否在web.config中使用任何设置,但实际上没有dll .
谢谢
我花了几个小时来解决这个问题,因为我在这里找到的有关此错误的所有设置都是相同的,但它仍然无效 . 问题是,我的Web服务中有一个文件夹,文件应该从该文件夹发送到WinCE设备,在将该文件夹转换为具有Classic.NetAppPool的应用程序后,它开始工作 .
如果您仍然需要使用HTTP模块,则需要按如下方式配置它(.NET 4.0框架):
在您的web.config中确保存在以下键:
以及检查IIS网站认证中的 Asp.Net Impresonation = Disable