首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在ASP.NET中禁用browserCaps功能?

是否可以在ASP.NET中禁用browserCaps功能?
EN

Stack Overflow用户
提问于 2010-10-06 20:48:49
回答 2查看 705关注 0票数 10

是否可以在ASP.NET中禁用browserCaps功能?

我希望我的网站能够像我定义的那样可靠和准确地提供给所有浏览器,而不管它们的功能如何。

如果他们的浏览器不能支持网站,那就是他们的问题。我的网站不应该是一些如何试图降级自己,以适应已停业的客户。

这是非常令人沮丧的,当它似乎有坏运气的蜘蛛爬行的网站,获得较低版本的网站导致输出缓存服务于剥离的文件。

EN

回答 2

Stack Overflow用户

发布于 2010-10-07 18:07:03

您可以在page指令或Page.Init中放置ClientTarget="uplevel“

代码语言:javascript
复制
<%@ Page ClientTarget="uplevel" ...... %>

代码语言:javascript
复制
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Init
    Page.ClientTarget = "uplevel"
End Sub

另一种选择是将.browser文件添加到站点的App_Browsers文件夹(默认的Asp.NET文件夹)中。它应该以所有具有正则表达式的浏览器为目标,并通过添加功能以某种方式禁用正常的浏览器检测。我只是使用它在Safari中以正确的方式呈现菜单控件,但我并不确切地知道如何一次对所有输出执行此操作。

票数 4
EN

Stack Overflow用户

发布于 2014-10-01 17:56:39

我目前正在尝试的一个疯狂的解决方法是注入返回静态HttpBrowserCapabilities的我们自己的HttpCapabilitiesDefaultProvider。然后,诀窍是始终返回相同的功能对象,因此通过在使用IE9时调用base.GetBrowserCapabilities,我们已经使用Newtonsoft创建了序列化,并且通过将此字符串保存在源代码中,我们可以构建一个类似IE9的功能对象,而不管发起请求的浏览器是什么。

代码语言:javascript
复制
public class CustomerHttpCapabilitiesProvider : HttpCapabilitiesDefaultProvider
{
    private const string m_IE9Definition = "{\r\n  \"$type\": \"System.Web.Mobile.MobileCapabilities, System.Web.Mobile\",\r\n  \"UseOptimizedCacheKey\":..... ";
    private readonly static Lazy<MobileCapabilities> m_Capabilities = new Lazy<MobileCapabilities>(() => JsonConvert.DeserializeObject<MobileCapabilities>(m_IE9Definition), true);

    public override HttpBrowserCapabilities GetBrowserCapabilities(HttpRequest request)
    {
        return m_Capabilities.Value;
    }
}

,然后在Application_Start中分配提供程序

代码语言:javascript
复制
HttpCapabilitiesBase.BrowserCapabilitiesProvider = new CustomerHttpCapabilitiesProvider();

然而,这还没有真正经过测试,不确定这种变化的确切影响是什么。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3872571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档