Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
Postado em : 26/05/2016
Retorna os Dados do Navegador da conexão do Cliente
Útil principalmente quando temos problemas relatados por um usuário, podemos coletar facilmente através da função Resumo()
, presente na classe, todos os principais dados do navegador sendo utilizado pelo usuário e analisar por exemplo se não é uma versão beta, se o JavaScript esta habilitado entre outros detalhes, a variável gerada pode ser armazenada junto aos dados da conexão do cliente.
Outro detalhe importante são os recursos utilizados para gerar esta Classe, podemos ver aqui nesta classe uma ideia do potencial da linguagem onde utilizamos classe rodando sob outra classe. É interessante que você estude os detalhes deste código.
Crie uma classe na pasta Models
de seu projeto e de o nome de DadosNavegador.cs
, copie e cole o código abaixo
Segue a Função
/* * DadosNavegador * * Retorna dados do Navegador do Cliente * * by Antonio Azevedo * * Visite nossa página http://www.codigoexpresso.com.br * * Referencia ao objeto 'System.Web.HttpBrowserCapabilities' * https://msdn.microsoft.com/pt-br/library/system.web.httpbrowsercapabilities(v=vs.110).aspx * */ using System; using System.Collections.Generic; using System.Linq; using System.Web; public class DadosNavegador { // Declarando as Variaveis public _Navegador Navegador { get; set; } public class _Navegador { public string Nome { get; set; } public string Versao { get; set; } public Boolean isBeta { get; set; } public Boolean isAOL { get; set; } public Boolean RastreadorWeb { get; set; } } public _Sistema Sistema { get; set; } public class _Sistema { public string Plataforma { get; set; } public string Win { get; set; } } public _Suporta Suporta { get; set; } public class _Suporta { public string VersaoJavaScript { get; set; } public Boolean Cookies { get; set; } public Boolean Frames { get; set; } public Boolean Tabelas { get; set; } public Boolean VBScript { get; set; } public Boolean JavaApplets { get; set; } public Boolean ActiveX { get; set; } } public _Resolucao Resolucao { get; set; } public class _Resolucao { public Int32 Altura { get; set; } public Int32 Largura { get; set; } public Int32 BitDepth { get; set; } } public _Mobile Mobile { get; set; } public class _Mobile { public Boolean isMobile { get; set; } public string Fabricante { get; set; } public string Modelo { get; set; } } /// <summary> /// Instancia a Classe e coleta os dados do navegador /// </summary> public DadosNavegador() { System.Web.HttpBrowserCapabilities browser = System.Web.HttpContext.Current.Request.Browser; this.Navegador = new _Navegador(); this.Sistema = new _Sistema(); this.Mobile = new _Mobile(); this.Resolucao = new _Resolucao(); this.Suporta = new _Suporta(); this.Navegador.Nome = browser.Browser; this.Navegador.Versao = browser.Version; this.Navegador.isBeta = browser.Beta; this.Navegador.isAOL = browser.AOL; this.Navegador.RastreadorWeb = browser.Crawler; this.Sistema.Plataforma = browser.Platform; if (browser.Win16) { this.Sistema.Win = "16"; } else { this.Sistema.Win = "32"; } this.Mobile.isMobile = browser.IsMobileDevice; if (Mobile.isMobile) { this.Mobile.Fabricante = browser.MobileDeviceManufacturer.Replace("Unknown", "Não Reconhecido"); this.Mobile.Modelo = browser.MobileDeviceModel.Replace("Unknown", "Não Reconhecido"); } else { this.Mobile.Fabricante = ""; this.Mobile.Modelo = ""; } this.Resolucao.Altura = browser.ScreenPixelsWidth; this.Resolucao.Largura = browser.ScreenPixelsHeight; this.Resolucao.BitDepth = browser.ScreenBitDepth; this.Suporta.VersaoJavaScript = browser.EcmaScriptVersion.ToString(); this.Suporta.VBScript = browser.VBScript; this.Suporta.JavaApplets = browser.JavaApplets; this.Suporta.Tabelas = browser.Tables; this.Suporta.Frames = browser.Frames; this.Suporta.Cookies = browser.Cookies; this.Suporta.ActiveX = browser.ActiveXControls; } /// <summary> /// Retorna uma string com dados resumidos do navegador e sistema /// </summary> public string Resumo() { return string.Format("Navegador: {0}v{1}{2}, {3}Plataforma: {4} {5},Versão JS: {6}, Cookies: {7}, Resolução: {8}x{9}", this.Navegador.Nome, this.Navegador.Versao, isBeta(), isMobile(), this.Sistema.Plataforma, this.Sistema.Win, this.Suporta.VersaoJavaScript, this.Suporta.Cookies.ToString().ToLower().Replace("true","Sim").Replace("false", "Não"), this.Resolucao.Largura, this.Resolucao.Altura); } /// <summary> /// Retorna string se versão do Navegador for Beta /// </summary> private string isBeta() { if (this.Navegador.isBeta) { return " Beta"; } return string.Empty; } /// <summary> /// Retorna string com dados do dispositivo movel se este for o caso /// </summary> private string isMobile() { if (this.Mobile.isMobile) { return string.Format("Mobile Fab: {0}, Mobile Mod: {1}, ", this.Mobile.Fabricante, this.Mobile.Modelo); } return string.Empty; } }
Exemplo de uso
// Instanciando a Classe DadosNavegador dadosNavegador = new DadosNavegador(); // Retorna string com nome do Navegador string NomeNavegador = dadosNavegador.Navegador.Nome; // Retorna um boolean (true/false) se gravação de Cookies esta habilitada boolean Cookies = dadosNavegador.Suporta.Cookies; // retorna string com resumo dos dados do navegador e Sistema string ResunoNavegador = dadosNavegador.Resumo();
Nesta Classe apresentamos uma pequena parte dos recursos de HttpBrowserCapabilities
, você pode estudar melhor os recurso no link abaixo :
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Classes anônimas em C#(CSharp)
- Comando nameof() C#(CSharp)
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Consulta SQLServer com paginação
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Estrangulando um monólito C#(CSharp)
- Exemplo de acesso a dados com SQL Server em C#.
- Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Métodos de extensão C#
- Ordenando um array com o comando OrderBy C#(CSharp)
- Parar um loop foreach usando o comando break C#(CSharp).
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)