Mik*_*ael 390 c# asp.net iis .net-4.0 iis-7.5
我安装了DotNetOpenAuth SDK-3.4.5.10201.vsix,我无法让它工作.它在本地工作(当我作为localhost运行时)但当我尝试发布它不起作用.
我得到的IIS错误消息是
错误摘要
HTTP错误500.22 - 内部服务器错误
检测到的ASP.NET设置不适用于集成管理管道模式.
和
Run Code Online (Sandbox Code Playgroud)Module ConfigurationValidationModule Notification BeginRequest Handler StaticFile Error Code 0x80070032
那么有一些关于如何解决问题的建议:
你可以尝试的事情:
将配置迁移到该
system.webServer/modules部分.您可以手动或通过命令行中的AppCmd执行此操作 - 例如,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/".使用AppCmd迁移应用程序将使其能够在集成模式下工作,并继续在经典模式和早期版本的IIS中工作.如果您确定可以忽略此错误,可以通过设置
system.webServer/validation@validateIntegratedModeConfiguration为false 来禁用它 .或者,将应用程序切换到经典模式应用程序池 - 例如,
%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool".只有在您无法迁移应用程序时才能执行此操作.
(将"默认网站"和"经典.NET AppPool"设置为您的应用程序路径和应用程序池名称)
但问题是我无法访问ISS服务器,因为我不是它的所有者.有什么方法可以解决这个问题吗?
Dav*_*vid 767
2. 第二选项是你想要的.
在你的web.config,确保这些键存在:
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
Jer*_*ook 105
添加<validation validateIntegratedModeConfiguration="false"/>地址症状,但并不适合所有情况.我曾经几次解决这个问题,希望能帮助别人不仅克服这个问题而且要理解它.(随着IIS 6逐渐淡出神话和谣言,这变得越来越重要.)
背景:
这个问题以及围绕它的混乱始于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将永远不会看到这些请求,因为它们从未被切换过.*另一方面,即使在IIS 6/Classic中,授权哪些用户可以访问.ASPX页面,例如对Foo.aspx的请求也是微不足道的,因为IIS总是将这些请求移交给ASP.NET管道.在经典模式下,ASP.NET不知道它没有被告知什么,并且有很多IIS 6/Classic可能没有告诉它.
建议使用集成模式,因为ASP.NET处理程序和模块可以直接与IIS管道交互.IIS管道不再只是将请求移交给ASP.NET管道,现在它允许ASP.NET代码直接挂钩到IIS管道和所有命中它的请求.这意味着ASP.NET模块不仅可以观察对静态图像文件的请求,还可以拦截这些请求并通过拒绝访问,记录请求等来采取行动.
克服错误:
然后,也许你正在给你的应用程序一个改头换面,或者它一直很好,直到你通过NuGet,手动或其他方式安装第三方库.在这种情况下,它完全可能httpHandlers或httpModules已被添加到system.web.结果是您看到的错误,因为validateIntegratedModeConfiguration默认值true.现在你有两个选择:
httpHandlers和httpModules元素system.web.这有几个可能的结果:
httpHandlers和httpModulesNuGet包不断增加system.web,嘿做你需要的.validateIntegratedModeConfiguration做false,但至少你知道你在做什么以及它为何重要.好读:
*当然,如果你喜欢那种东西,有很多方法可以通过像野外卡映射这样的咒语从IIS 6/Classic中获取所有类型的奇怪内容.
Ash*_*mad 34
如果您仍然需要使用HTTP模块,则需要按如下方式配置它(.NET 4.0框架):
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MyModule" type="[Namespace].[Class], [assembly]"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
Gaʀ*_*ʀʀʏ 31
我遇到了这个问题,但有一个不同的解决方案.它涉及更新Control Panel>Administrative Tools>IIS Manager和恢复我的App网站的托管管道Integrated来Classic.
小智 5
在您的web.config中,确保以下键存在:
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
以及检查Asp.Net Impresonation =在IIS网站身份验证中禁用
| 归档时间: |
|
| 查看次数: |
404880 次 |
| 最近记录: |