怎么修改服务器兼容模式,如何有力地从服务器端设置IE的兼容模式了吗?如何有力地从服务器端设置IE的兼容模式了吗?(How t...

我发现这样做的两种常用方法的问题:

与定制标题(这样做 web.config中)允许相同应用程序的不同的部署来不同地具有这个集。 我认为这是一个更可能出错的事情,所以我认为这是更好的,如果应用程序指定此代码。 此外, IIS6不支持此 。

包括HTML 在Web窗体母版页或MVC布局页标签似乎比上述更好。 但是,如果某些页不从这些则继承标签需要被复制,所以有一个潜在的可维护性和可靠性问题。

网络流量可以通过仅发送可以减少X-UA-Compatible标头到Internet Explorer的客户端。

结构良好的应用

如果你的应用程序中,导致所有页面,最终由一个根页面继承的方式构成,包括标签,如图其他的答案 。

遗留应用程序

否则,我认为要做到这一点的最好办法是自动的HTTP标头添加到所有HTML的响应。 要做到这一点的方法之一是使用IHttpModule :

public class IeCompatibilityModeDisabler : IHttpModule

{

public void Init(HttpApplication context)

{

context.PreSendRequestHeaders += (sender, e) => DisableCompatibilityModeIfApplicable();

}

private void DisableCompatibilityModeIfApplicable()

{

if (IsIe && IsPage)

DisableCompatibilityMode();

}

private void DisableCompatibilityMode()

{

var response = Context.Response;

response.AddHeader("X-UA-Compatible", "IE=edge");

}

private bool IsIe { get { return Context.Request.Browser.IsBrowser("IE"); } }

private bool IsPage { get { return Context.Handler is Page; } }

private HttpContext Context { get { return HttpContext.Current; } }

public void Dispose() { }

}

IE=edge表明,IE浏览器应使用其最新的渲染引擎(而不是兼容模式)来渲染页面。

看来,HTTP模块在web.config文件中经常注册,但这让我们回到第一个问题。 但是, 您可以通过编程在Global.asax中注册它们是这样的:

public class Global : HttpApplication

{

private static IeCompatibilityModeDisabler module;

void Application_Start(object sender, EventArgs e)

{

module = new IeCompatibilityModeDisabler();

}

public override void Init()

{

base.Init();

module.Init(this);

}

}

请注意,这是很重要的模块是static ,并没有实例Init ,以便有每个应用程序只有一个实例。 当然,在现实世界的应用程序的IoC容器也许应该管理这个。

好处

克服了这个答案开始概述的问题。

缺点

网站管理员没有对标头值控制。 这可能是一个问题,如果Internet Explorer的一个新的版本出来,并会导致网站的渲染。 然而,这可以通过具有该模块来克服读取来自应用程序的配置文件,而不是使用硬编码值标头值。

这可能需要修改与ASP.NET MVC工作。

这并不适用于静态HTML页面的工作。

该PreSendRequestHeaders在上面的代码的事件似乎并没有在IIS6火。 我还没有想出如何解决这个错误呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值