Skip to content

axle-h/.NET-Device-Detection

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

51Degrees Device Detection for Microsoft .NET

Recent Changes | Supported Databases | .NET Developer Documention | Available Properties

Need C | Java | PHP | Python | Perl | Node.js?

Server Side: Use code like...

Request.Browser["IsMobile"]

or

Request.Browser["IsTablet"]

... from within a web application server side to determine the requesting device type.

Client Side: Include...

https://[YOUR DOMAIN]/51Degrees.features.js?DeviceType&ScreenInchesDiagonal

... from Javascript to retrieve device type and physcial screen size information. Use Google Analytics custom dimensions to add this data for more granular analysis.

Offline: Use...

var detectionProvider = new Provider(StreamFactory.Create("[DATA FILE LOCATION]"));
var deviceType = detectionProvider.Match("[YOUR USERAGENT]")["DeviceType"];

... to perform offline analysis of web logs with User-Agent headers.

Review All Properties

What's needed?

The simplest method of deploying 51Degrees device detection to a .NET project is with NuGet. Just search for 51Degrees on NuGet.

This GitHub repository and NuGet include 51Degrees free Lite device database. The Lite data is updated monthly by our professional team of analysts.

Data files which are updated weekly and daily, automatically, and with more properties and device combinationsare also available.

Compare Device Databases

Recent Changes

Version 3.2.3 Highlights

This release focuses on reducing memory consumption and improving performance when the device data file is used directly from the disk.

Important Change: The embedded device data has been removed from the assembly and by default placed in the App_Data folder for both web and non-web projects. The solution will not work without the associated data file being provided and the WebProvider.ActiveProvider property can now return null.

Major Changes in Version 3.2

  • Embedded data has been removed from the assembly and now must be provided from the App_Data folder.
  • .NET 3.5 is not supported in this release in order to use memory mapped files and simplify overriding default browser capabilities.
  • In stream mode entity data properties that can allocate large arrays only initialise these arrays when needed.
  • Caches used with stream operation are now fixed memory size and serviced via the thread pool.
  • Automatic update processes uses temporary files rather than main memory to verify integrity of updated files prior to using them.
  • Temporary files are now created in the App_Data/51Degrees folder of the web application rather than a UNC path or the master data file folder.
  • Values associated with Profiles are now retrieved using a more efficient algorithm.
  • DataSet.Properties collection now has a string accesser to make retrieving properties by name simpler.
  • Web sites using memory mode use a byte array to improve start up time.
  • Version 3.2 data file formats are supported in parallel with version 3.1 data files.
  • 51Degrees unit tests are now part of the open source distribution.

Changes from 3.2.2

  • Automatic download requests version 3.2 data file format.
  • The active provider will not be initialised when data sharing is enabled.

Changes from 3.2.1

  • TrieProvider now support V3.2 data file format which includes embedded HTTP headers in the properties data array.
  • TrieProvider supports NameValueCollection of HTTP headers rather than a single user agent string. An collection of device indexes is returned for each of the relevant headers. The collection can be used with new GetPropertyValue methods to return the property value from the most relevant HTTP header.
  • If a file is used with the StreamFactory it will only be deleted if the IsTemporary parameter is set to true. Previously the extension of the file was used to determine if the file was temporary and eligible for deletion.
  • Stream DataSet now exposes information related to the number of readers created and queued in the underlying Pool.
  • Detector module no longer listens for PostAuthorizeRequest if image optimisation is disabled.
  • Changing device detection or image optimisation enabled states will change web.config modules collection to ensure configured to listen for all requests, not just managed code.
  • Changed image optimiser process to reduce memory consumption slightly, and ensure resized image is smaller than the original.

Changes from 3.1.13

  • The entity RankedSignatureIndex has been renamed to IntegerEntity along with the associated factories. This is so that the entity can be reused in the new lists for Nodes related to Signatures and Signatures related to Nodes where each list also contains 4 byte integer data types.
  • A potential threading problem has been resolved in Profile entity by only referencing the property PropertyIndexToValues rather than its backed private field.
  • Cache service method thread start is now synchronised.
  • Memory/Profile.cs Init() method has been removed as the ValueIndexes and SignatureIndexes arrays are needed to support other methods and don’t need to be freed.
  • Changed the Cache classes AddRecent and ServiceCache methods to prevent multiple service operations in multiple threads.
  • Added a ResetCache method to the dataset.
  • WebProvider in memory mode now uses a byte array in memory rather than constructing all instances of every entity. This reduces start up time.
  • Unit tests have been added for performance, memory and major data error checks.
  • V3.2 data format is now supported.

About

THE Fastest and most Accurate device detection for .NET - professionally maintained device data

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 98.4%
  • Other 1.6%