Установите HttpBrowserCapabilitiesBase.Browser для Edge - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть метод, который используется для возврата строки на основе браузера.Однако он основывает браузер на одном из его параметров, System.Web.HttpBrowserCapabilitiesBase, у которого есть свойство с именем Browser, а для Edge установлено значение " Chrome ".

(упростили код.)

public static string GetStringBasedOnBrowser(System.Web.HttpBrowserCapabilitiesBase browser)
{
    string returnString;

    if (browser.Browser == "IE" && (browser.MajorVersion <= 8))
        returnString = "something";
    else if (browser.Browser == "Edge")
        returnString = "something else"; // Never reached.
    else
        returnString = "42";

    return returnString;
}

Я хотел отправить фальшивку HttpBrowserCapabilitiesBase, чтобы избежать путаницы с функциональностью, но в ней есть только геттер.HttpBrowserCapabilities наследуется от него, но я ничего не могу установить в конструкторе, чтобы браузер установил « Edge ».

Есть ли способ, которым я могу подделать это?

1 Ответ

0 голосов
/ 30 ноября 2018

Информация о возможностях браузеров ASP.NET основана на списке строк агента, который в значительной степени устарел и не поддерживается. 1 База данных последний раз обновлялась до появления Edge.

Существует два варианта:

  • База данных сторонних браузеров.Это стоит денег.

  • Не делай этого.Лучше обрабатывать только самые большие различия между браузерами (например, рабочий стол и мобильный телефон) при рендеринге HTML.Подробные различия должны обрабатываться на клиенте, в идеале в CSS, но обычно требуется некоторый JavaScript, когда необходимо обрабатывать особенно устаревшие браузеры.

1 Выпуск продуктациклы для ASP.NET слишком медленные, чтобы справляться с разнообразием и скоростью смены браузеров более 5 лет назад, 2 , это только ухудшилось.

2 Это, по крайней мере, давно, может быть за несколько лет до этого.

...