如何:为 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 未包含特定的文件时,提供该默认文件。
注册托管代码模块。
添加自定义响应标头。
当请求 URL 未包含 Web 应用程序的特定文件时,IIS 7.0 将提供一个默认文件。
配置默认文件
如果应用程序没有 Web.config 文件,请使用 Visual Studio 或文本编辑器创建该文件。
有关更多信息,请参见 编辑 ASP.NET 配置文件。
如果 Web.config 文件尚未包含 system.webServer 节,请在 configuration 元素中创建该节,如下面的示例所示:
<configuration>
<system.webServer>
</system.webServer>
</configuration>在 system.webServer 元素内,创建一个 defaultDocument 元素。
在 defaultDocument 元素内,创建一个 files 元素。
在 files 元素内创建一个 add 元素,并在 value 属性内指定默认文件的路径和名称。
下面的示例演示了一个 system.webServer 节,该节配置为提供 Products.aspx 文件作为默认文件。
<configuration>
<system.webServer>
<defaultDocument> <files> <add value="Products.aspx" /> </files> </defaultDocument>
</system.webServer>
</configuration>
每次请求时都会调用托管代码模块,通过该模块可对请求或响应进行自定义。
配置自定义托管代码模块
如果应用程序没有 Web.config 文件,请使用 Visual Studio 或文本编辑器创建该文件。
有关更多信息,请参见 编辑 ASP.NET 配置文件。
如果 Web.config 文件尚未包含 system.webServer 节,请在 configuration 元素中创建该节,如下面的示例所示:
<configuration>
<system.webServer>
</system.webServer>
</configuration>在 system.webServer 元素内,创建一个 modules 元素。
在 modules 元素内创建一个 add 元素,并在 name 和 type 属性中指定自定义模块。
实际的名称和类型取决于要添加的模块。下面的示例演示如何添加名为CustomModule的自定义模块,该模块将实现为类型Samples.CustomModule。
<configuration>
<system.webServer>
<modules> <add name="CustomModule" type="Samples.CustomModule" /> </modules>
</system.webServer>
</configuration>向模块注册中添加 precondition 属性,并将其值设置为managedHandler。
此前置条件会导致仅在请求 ASP.NET 应用程序资源(例如 .aspx 文件或托管处理程序)时才调用该模块。该资源中不包括静态文件(例如 .htm 文件)。
其 configuration 节将类似于以下示例。
<configuration>
<system.webServer>
<modules>
<add name="CustomModule" type="Samples.CustomModule"
precondition="managedHandler" />
</modules>
<defaultDocument>
<files>
<add value="Products.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
利用自定义响应标头,可向浏览器发送应用程序特定的信息。例如,可以添加 Content-Language 标头来描述网页正文中使用的语言。若要执行此操作,请提供一个或多个语言和国家/地区值,例如 en-US(美国英语)或 en-GB(英国英语)。
配置自定义响应标头
如果应用程序没有 Web.config 文件,请使用 Visual Studio 或文本编辑器创建该文件。
有关更多信息,请参见 编辑 ASP.NET 配置文件。
如果 Web.config 文件尚未包含 system.webServer 节,请在 configuration 元素中创建该节,如下面的示例所示:
<configuration>
<system.webServer>
</system.webServer>
</configuration>在 system.webServer 元素内,创建一个 httpProtocol 元素。
在 httpProtocol 元素内,创建一个 customHeaders 元素。
在 customHeaders 元素内创建一个 add 标记,并在 name 和 value 属性中指定自定义标头。
实际的名称和类型将取决于该标头在应用程序中的功能。下面的示例演示如何添加名为CustomHeader且值为CustomHeader的自定义标头。
<configuration>
<system.webServer>
<httpProtocol> <customHeaders> <add name="CustomHeader" value="CustomHeader" /> <customHeaders> </httpProtocol>
</system.webServer>
</configuration>
任务
概念
参考
当你有自定义的HttpModule和HttpHandler时,需要同时在这两处添加
这个是为IIS6或者IIS7的经典模式用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< system.web > < httpHandlers > < remove verb="*" path="*.asmx"/> < add verb="*" path="CombineScriptHandler.aspx" validate="false" type="MvcScriptManager.CombineScriptHandler, MvcScriptManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6eb4f344e8972dc6"/> < add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> < add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </ httpHandlers > < httpModules > < add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </ httpModules > </ system.web > |
这个是为IIS7的集成模式用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
< system.webServer > < validation validateIntegratedModeConfiguration="false"/> < modules runAllManagedModulesForAllRequests="true"> < remove name="ScriptModule"/> < remove name="UrlRoutingModule"/> < add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </ modules > < handlers > < remove name="WebServiceHandlerFactory-Integrated"/> < remove name="ScriptHandlerFactory"/> < remove name="ScriptHandlerFactoryAppServices"/> < remove name="ScriptResource"/> < remove name="MvcHttpHandler"/> < remove name="UrlRoutingHandler"/> < add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> < add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </ handlers > </ system.webServer > |
在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 返回
如何:为 IIS 7.0 配置 <system.webServer> 节的更多相关文章
- ASP.NET的运行原理与运行机制 如何:为 IIS 7.0 配置 <system.webServer> 节
https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的 ...
- 为 IIS 7.0 配置 <system.webServer>
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...
- IIS 4.0配置
neHandler” 今天安装了windows7 开发web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactor ...
- IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)
IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...
- 跨域学习笔记3--web.config设置之system.webServer 详细介绍,为网站设置默认文档
自己并不懂,在此先记录下来,留待以后学习... 如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.mic ...
- 转 web.config设置之system.webServer 详细介绍,为网站设置默认文档
如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.microsoft.com/zh-cn/sysinte ...
- web.config设置之system.webServer 详细介绍,为网站设置默认文档
如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.microsoft.com/zh-cn/sysinte ...
- Web.config 文件中的 system.webServer
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...
- Web.config设置system.webServer
一般情况在iis部署web网站都非常顺利,但是遇到复杂环境,或者被配置过又正在使用的时候,就束手无策了, 因为对IIS和Web.config不熟悉,不知其中要害,导致浪费一天甚至更久的时间去处理一个可 ...
随机推荐
- javascript高级:原型与继承
原型继承的本质就是一条原型链,对象会沿着这条链,访问链里的方法属性. 对象的__proto__属性就是用于访问它的原型链的上一层: 考虑以下对象: 1. 所有对象的原型: Object.prototy ...
- less基本知识总结
> 一款比较流行的预处理CSS,支持变量.混合.函数.嵌套.循环等特点> [官网](http://lesscss.org/)> [中文网](http://lesscss.cn/)&g ...
- Ribbon负载均衡策略与自定义配置
Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 hello: ribbon: NFLoadBalancerRuleClassName:com.netflix.l ...
- Spring Boot干货系列:(三)启动原理解析
Spring Boot干货系列:(三)启动原理解析 2017-03-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说 ...
- 快速了解Log4J
http://liuzhijun.iteye.com/blog/1746571 ******************** Log4J的三个组件: Logger:日志记录器,负责收集处理日志记录 ...
- Java 验证码识别之多线程打码兔
验证码识别,爬虫永远的话题~ 用打码兔总体的体验就是单线程速度太慢~ import java.io.IOException; import java.net.MalformedURLException ...
- uva10160(dfs+状态压缩)
题意:给出n个点,以及m条边,这些边代表着这些点相连,修一个电力站,若在某一点修一个站,那么与这个点相连的点都可以通电,问所有的点都通电的话至少要修多少个电力站........ 思路:最多给出的是35 ...
- 【Unity/Kinect】Kinect一些常用的API
先开好这个坑,之后用到就补充,方便回顾. 获取用户相对Kinect传感器设备的位置坐标.(在Kinect坐标系中的位置) public Vector3 GetUserPosition(Int64 us ...
- 【C#/WPF】键盘事件
需求:按下回车键,触发事件. 搜MSDN时,看到的键盘事件是System.Windows.Forms里的,在WPF中没法用: https://msdn.microsoft.com/zh-tw/libr ...
- 【WPF】给UserControl引入多个资源
问题:为了方便资源的复用,我们通常会把资源单独抽取为一个资源文件,供其他文件引用.而用户自定义控件UserControl中经常需要引入多个资源文件.而在XAML中由于标签UserControl.Res ...