Asp.net 是否可以在web.config中添加响应http头?
在我的应用程序中,我需要设置一个http响应头。我想在web.config中执行此操作。您始终可以向configuration.appSettings部分添加项目Asp.net 是否可以在web.config中添加响应http头?,asp.net,Asp.net,在我的应用程序中,我需要设置一个http响应头。我想在web.config中执行此操作。您始终可以向configuration.appSettings部分添加项目 然后,您的母版页、自定义基页类或特定页面可以通过从web.config读取来设置这些http头。我不知道您可以在web.config上进行设置 到目前为止,我知道您最好的选择是: 创建一个HTTPModule,在其中为所有响应设置标题 在IIS上添加标头 这里有MSDN的参考资料: 这个链接有一个HTTPModule的实现,它似
然后,您的母版页、自定义基页类或特定页面可以通过从web.config读取来设置这些http头。我不知道您可以在web.config上进行设置 到目前为止,我知道您最好的选择是:
- 创建一个HTTPModule,在其中为所有响应设置标题
- 在IIS上添加标头
没有内置的功能可以做到这一点 您可以创建一个
HttpModule
,从web.config读取标题并将其添加到响应中。解决方案
经过长时间的搜索,我终于找到了解决办法。使用以下代码创建一个类:
public class myHTTPHeaderModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.EndRequest += new EventHandler(context_EndRequest);
}
void context_EndRequest(object sender, EventArgs e)
{
HttpResponse response = HttpContext.Current.Response;
response.AddHeader("Content-Language", "*");
}
#endregion
}
(不要问我为什么要使用此事件,但它可以工作….)
现在在HttpModule部分的web.config中添加一行:
<httpModules>
<add type="namespace.myHTTPHeaderModule, assembly name" name="headers" />
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
就这样 最好的方法是
web.config
文件的
元素。请注意,这仅适用于IIS版本7及更高版本
添加示例标头的配置为:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Language" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
我相信这里没有一个答案是全面的,所以我的答案是:
请参阅我的博客文章,了解如何添加自定义HTTP模块以添加/删除HTTP头。虽然我试图解决的问题有所不同,但我也需要添加/删除HTTP头。这篇博文的要点如下:
在HttpContext.PreSendRequestHeaders中执行此操作的事件。您也可以通过IIS设置或IIS配置执行此操作,如所示。此配置文件(applicationHost.config)位于默认安装的%WinDir%\System32\Inetsrv\config\applicationHost.config。如何创建一个HTTPModule来设置标题?请参阅我在此主题上的博文:。虽然我试图解决的问题有所不同,但我需要添加/删除HTTP头。在HttpContext.PreSendRequestHeaders中执行此操作的事件。您也可以从IIS设置或IIS的配置中执行此操作,如下所示:问题是,此操作仅适用于IIS>=7,如果您有IIS6,则说明您运气不佳。IIS ref链接现在重定向到: