ASP.NET网站发布到IIS后验证码不能显示与IIS模式

2018-03-01 来源:维克会网络

在Frameworv4.0的目录中安装的程序以管理员权限重新运行一下就可以了.执行以下命令:


%windir%Microsoft.NETFramework 4.0.30319spnet_regiis.exe -i


应用程序池中就会有v4.0的应用程序池,然后再在Win7下打开控制面板--管理工具--Internet 信息服务(IIS)管理器,选择网站,在右边的“基本设置”中,将“应用程序池”修改为“ASP.NET v4.0 Classic”,如下图所示:



20160512000724640.jpg



解决方案2:配置网站为IIS集成模式


配置IIS后可能运行提示以下错误:


HTTP 错误 500.23 - Internal Server Error

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


其中由于在IIS7的应用程序池有两种模式, “集成模式”和“经典模式”。在IIS6上运行的代码在集成模式下会出现这种错误。那么可以直接将网站配置成集成模式下运行,也可以解决验证码不能显示的问题。

如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到<modules>和<hanlders>节里去。


修改web.config配置文件:例如原先设置(你的环境中可能没有httpModules,httpHandlers节点)

<system.web>

............

<httpModules>


<add name="WebbHttpModule" type="Webb.WAVE.Controls.Upload.WebbHttpModule,Webb.WAVE.Controls.Upload" />


<add name="rewriteUrl" type="RewritUrl.Rw,RewritUrl" />

</httpModules>

<httpHandlers>

<add path="*.myh" verb="GET" type="MyHandler" />

</httpHandlers>


</system.web>


在IIS7应用程序池为“集成模式”时,改为:

<system.web>

...........

</system.web>

<system.webServer>

<modules>

<add name="WebbHttpModule" type="Webb.WAVE.Controls.Upload.WebbHttpModule, Webb.WAVE.Controls.Upload" />

<add name="rewriteUrl" type="RewritUrl.Rw,RewritUrl" />

</modules>

<handlers>

<add name="MyHandler" path="*.myh" verb="GET" type="MyHandler" preCondition="integratedMode" />

</handlers>

</system.webServer>


如果你的web.config没有httpModules,httpHandlers节点,则直接在节点system.webServer中添加:


<validation validateIntegratedModeConfiguration="false" />


这样可以禁止验证集成模式,避免错误提示。




经典模式(classic mode)和集成模式(Integrated mode)


经典模式下,IIS会用ISAPI扩展(ISAPI extension aspnet_isapi.dll)和 ISAPI过滤器(ISAPI filter aspnet_filter.dll)来调用ASP.NET运行库来处理请求。服务器会用两种管道来处理请求一个负责源代码,另外一个负责托管代码。在这种模式下,应用程序不能充分使用IIS7.X提供的服务。



集成模式是一种统一的请求处理管道,集成模式下不管托管代码还是本机代码,都可以在身份验证和执行处理程序被插入到内核代码的托管代码拦截,它将ASP.NET请求管道与IIS核心管道组合在一起,ASP.NET从IIS插件(IIS extension)的角色进入了IIS的核心去监测每个请求和操作。

IIS7集成模式还增加了MapRequestHandler、LogRequest 和 PostLogRequest 事件,如果在经典模式下加了这些处理事件,会抛出:此操作要求使用 IIS 集成管线模式。如果集成模式下不让IIS处理不兼容集成模式的配置以及处理方式,可以在web.config中配置:

<validation validateIntegratedModeConfiguration="false" />

</system.webServer>


<system.webServer>

  




上一篇:小程序没有授权时的处理方法

下一篇:没有了