如何:为 IIS 7.0 配置 <system.webServer> 节
https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx
https://www.cnblogs.com/tl2f/p/5016154.html
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置。system.WebServer 是 configuration 节的子级。有关更多信息,请参见 IIS 7.0: system.webServer Section Group (IIS Settings Schema)(IIS 7.0:system.webServer 节组(IIS 设置架构))。
下面是可以在 system.WebServer 配置组中进行的 Web 服务器设置的示例:
-
当请求未包含特定资源时,Web 服务器返回给客户端的默认文档(defaultDocument 元素)。
-
响应的压缩设置(httpCompression 元素)。
-
自定义标头(httpProtocol 节的 customHeaders 元素)。
-
模块(modules 元素)。
-
处理程序(handlers 元素)。
system.webServer 节中的某些设置只适用于 IIS 7.0 集成模式,而不适用于经典模式。具体而言,如果应用程序正在经典模式下运行,则会忽略 Web.config 文件的 system.WebServer节中指定的所有托管代码模块和处理程序。与 IIS 的早期版本相同,托管代码模块和处理程序必须在 system.web 节的 httpModules 和 httpHandlers 元素中定义。
本主题阐释需要修改 system.webServer 节的三个常见配置任务:
-
添加默认文件,以便在请求 URL 未包含特定的文件时,提供该默认文件。
-
注册托管代码模块。
-
添加自定义响应标头。
在Web.config中配置handler节点时发现用vs2010和用vs2015竟然不一样,经过多次测试发现了一些倪端:
<configuration>
<!--vs2010中需要配这个,vs2015中可省开始-->
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<add path="user.ashx(ajax中url请求的路径)" verb="POST,GET" type="MyHandler.UsersHander(方法的真实路径即:MyHandler类库下的UsersHander类)"/>
</httpHandlers>
</system.web>
<!--vs2010中需要配这个,vs2015中可省结束-->
<!--vs2015中需要配这个,vs2010中可省开始-->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" /><!--没有上面内容时此处可省-->
<handlers>
<add path="user.ashx(ajax中url请求的路径)" verb="POST,GET" type="MyHandler.UsersHander(方法的真实路径即:MyHandler类库下的UsersHander类)"/>
</handlers>
</system.webServer>
<!--vs2015中需要配这个,vs2010中可省结束-->
</configuration>
用于健康检测:
namespace HealthCheck.Utils { public class HealthCheckHandler : IHttpHandler { public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("ok"); } } }
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <add name="HealthCheck" path="healthcheck.check" type="HealthCheck.Utils.HealthCheckHandler" verb="get"/> </handlers> </system.webServer>
将HealthCheck.Utils做成一个类库项目(需要继承IHttpHandler,引入相关引用),生成dll,项目中引入此dll,访问http://localhost:9152/HealthCheck.check 返回