NuGet packages (57)
Showing the top 5 NuGet packages that depend on Microsoft.ApplicationInsights.Web:
| Ingeniux_DSS_RTAPI |
Nuget Package for Ingeniux Dynamic Site Server Runtime API
| Cireson.Platform.Core.Host |
| Glimpse.ApplicationInsights.Web |
This package integrates Application Insights with Glimpse for .NET web applications. Glimpse is a web debugging and diagnostics tool used to gain a better understanding of whats happening inside of your ASP.NET + application. Applications Insights is a service that allows developers to monitor performance, availability, and usage of their applications.
| FourRoads.TelligentCommunityApplicationInsights |
Common Four Roads Telligent Libraries -IncludeReferencedProjects
| AnalyzerApi |
Web API MVC 5 Application with auto update implementation via self-package as NuGet package
GitHub repositories (51)
Showing the top 5 popular GitHub repositories that depend on Microsoft.ApplicationInsights.Web:
| microsoft/ailab |
Experience, Learn and Code the latest breakthrough innovations with Microsoft AI
| RicoSuter/NSwag |
The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript.
| microsoft/WinAppDriver |
Windows Application Driver
| pnp/PnP |
SharePoint / Office Developer Patterns and Practices - Archived older solutions. Please see https://aka.ms/mpnp for updated guidance
| NuGet/NuGetGallery |
NuGet Gallery is a package repository that powers https://www.nuget.org. Use this repo for reporting NuGet.org issues.
Microsoft Corporation. All rights reserved.
This update has a couple of non-breaking API changes. Namely, is now consistent with the Node.js SDK. The only change here is the named argument is renamed from to . A shim is in place so any existing usages of will still work, and the old field is marked as optional, so any type-checked files will still "compile". There are no breaking changes with this change, but you are encouraged to use as your named argument field as error will be deprecated in a future major version.Old New Correlation Header Domain Whitelisting #
Second, the ability to only send correlation headers to specific, whitelisted domains is now available as a configuration option , . It accepts an of domain . Wildcards ("*") are okay. By populating this array, all other domains which your application makes requests to will not have correlation headers included. This setting makes it easy to avoid OPTIONS requests to services outside of your control.
You can use the inclusion list and the exclusion list in conjunction with each other to add correlation headers to a particular domain, , and at the same time exclude headers from a prefixed version of it, .Tag Override Change #
Performing custom tag overrides is now more consistent with all of the other Application Insights SDKs, in that it is modified via a simple key-value dictionary. There are no breaking changes with this update, and if you are setting any tags via the old way, they will still work as they do now. You are encouraged to update them since the old way will be deprecated in a future major version release.Old New Changelog
# - config: add ability to whitelist specific domains for adding correlation headers # - docs: fix sample configuration settings # - common: replace Array.some with Array.forEach to simplify polyfill story, add tests # - snippet: add missing methods to lazy loaders # - tags can now be set with same API as other AI SDKs # - rename IExceptionTelemetry.error --> IExceptionTelemetry.exception # - react: fix plugin causing jest tests to fail # - docs: add mention of how to update current context's operation # - react: remove analytics package dependency # - docs: update context refresh information # - Remove code from adding libVer from extensions # - automatically add tag, add to pageview telemetry # - fix issue with not affecting send buffers
Configure Application Insights for your ASP.NET website
This procedure configures your ASP.NET web app to send telemetry to the Application Insights feature of the Azure Monitor service. It works for ASP.NET apps that are hosted either in your own IIS servers on-premises or in the cloud.
To add Application Insights to your ASP.NET website, you need to:
We recommend connection strings over instrumentation keys. New Azure regions require the use of connection strings instead of instrumentation keys.
A connection string identifies the resource that you want to associate with your telemetry data. It also allows you to modify the endpoints that your resource will use as a destination for your telemetry. You'll need to copy the connection string and add it to your application's code or to an environment variable.
Create a basic ASP.NET web app
- Open Visual Studio
- Select File > New > Project.
- Select ASP.NET Web Application(.NET Framework) C#.
- Enter a project name, and then select Create.
- Select MVC > Create.
Add Application Insights automatically
This section will guide you through automatically adding Application Insights to a template-based ASP.NET web app. From within your ASP.NET web app project in Visual Studio:
Select Project > Add Application Insights Telemetry > Application Insights Sdk (local) > Next > Finish > Close.
Open the ApplicationInsights.config file.
Before the closing tag, add a line that contains the instrumentation key for your Application Insights resource. You can find your instrumentation key on the overview pane of the newly created Application Insights resource that you created as part of the prerequisites for this article.
Select Project > Manage NuGet Packages > Updates. Then update each NuGet package to the latest stable release.
Run your application by selecting IIS Express. A basic ASP.NET app opens. As you browse through the pages on the site, telemetry will be sent to Application Insights.
Add Application Insights manually
This section will guide you through manually adding Application Insights to a template-based ASP.NET web app. This section assumes that you're using a web app based on the standard MVC web app template for the ASP.NET Framework.
Add the following NuGet packages and their dependencies to your project:
In some cases, the ApplicationInsights.config file is created for you automatically. If the file is already present, skip to step 4.
If it's not created automatically, you'll need to create it yourself. At the same level in your project as the Global.asax file, create a new file called ApplicationInsights.config.
Copy the following XML configuration into your newly created file:
Before the closing tag, add your instrumentation key for your Application Insights resource. You can find your instrumentation key on the overview pane of the newly created Application Insights resource that you created as part of the prerequisites for this article.
At the same level of your project as the ApplicationInsights.config file, create a folder called ErrorHandler with a new C# file called AiHandleErrorAttribute.cs. The contents of the file will look like this:
In the App_Start folder, open the FilterConfig.cs file and change it to match the sample:
If Web.config is already updated, skip this step. Otherwise, update the file as follows:
You have now successfully configured server-side application monitoring. If you run your web app, you'll see telemetry begin to appear in Application Insights.
Although it's possible to manually add the snippet to the header of each HTML page, we recommend that you instead add the snippet to a primary page. That action will inject the snippet into all pages of a site.
There's a known issue in the current version of Visual Studio storing the instrumentation key in a user secret is broken for .NET Framework-based apps. The key ultimately has to be hardcoded into the applicationinsights.config file to work around this bug. This article is designed to avoid this issue entirely, by not using user secrets.
Read and contribute to the code.
For the latest updates and bug fixes, consult the release notes.
View all page feedback
Application Insights for web pages
Connection Strings are recommended over instrumentation keys. New Azure regions require the use of connection strings instead of instrumentation keys. Connection string identifies the resource that you want to associate your telemetry data with. It also allows you to modify the endpoints your resource will use as a destination for your telemetry. You will need to copy the connection string and add it to your application's code or to an environment variable.
- First you need an Application Insights resource. If you don't already have a resource and instrumentation key, follow the create a new resource instructions.
npm based setup
Install via NPM.
Typings are included with this package, so you do not need to install a separate typings package.
Snippet based setup
To assist with tracking which version of the snippet your application is using, starting from version the page view event will include a new tag "ai.internal.snippet" that will contain the identified snippet version.
The current Snippet (listed below) is version "5", the version is encoded in the snippet as sv:"#" and the current version is also available on GitHub.
Reporting Script load failures
This version of the snippet detects and reports failures when loading the SDK from the CDN as an exception to the Azure Monitor portal (under the failures > exceptions > browser), this exception provides visibility into failures of this type so that you are aware that your application is not reporting telemetry (or other exceptions) as expected. This signal is an important measurement in understanding that you have lost telemetry because the SDK did not load or initialize which can lead to:
- Under-reporting of how users are using (or trying to use) your site;
- Missing telemetry on how your end users are using your site;
For details on this exception see the SDK load failure troubleshooting page.
Reporting of this failure as an exception to the portal does not use the configuration option from the application insights configuration and therefore if this failure occurs it will always be reported by the snippet, even when the window.onerror support is disabled.
Reporting of SDK load failures is specifically NOT supported on IE 8 (or less). This assists with reducing the minified size of the snippet by assuming that most environments are not exclusively IE 8 or less. If you have this requirement and you wish to receive these exceptions, you will need to either include a fetch poly fill or create you own snippet version that uses instead of , it is recommended that you use the provided snippet source code as a starting point.
If you are using a previous version of the snippet, it is highly recommended that you update to the latest version so that you will receive these previously unreported issues.
Snippet configuration options
Each configuration option is shown above on a new line, if you don't wish to override the default value of an item listed as [optional] you can remove that line to minimize the resulting size of your returned page.
The available configuration options are
|src||string [required]||The full URL for where to load the SDK from. This value is used for the "src" attribute of a dynamically added <script /> tag. You can use the public CDN location or your own privately hosted one.|
|name||string [optional]||The global name for the initialized SDK, defaults to . So will be a reference to the initialized instance. Note: if you provide a name value or a previous instance appears to be assigned (via the global name appInsightsSDK) then this name value will also be defined in the global namespace as , this is required by the SDK initialization code to ensure it's initializing and updating the correct snippet skeleton and proxy methods.|
|ld||number in ms [optional]||Defines the load delay to wait before attempting to load the SDK. Default value is 0ms and any negative value will immediately add a script tag to the <head> region of the page, which will then block the page load event until to script is loaded (or fails).|
|useXhr||boolean [optional]||This setting is used only for reporting SDK load failures. Reporting will first attempt to use fetch() if available and then fallback to XHR, setting this value to true just bypasses the fetch check. Use of this value is only be required if your application is being used in an environment where fetch would fail to send the failure events.|
|crossOrigin||string [optional]||By including this setting, the script tag added to download the SDK will include the crossOrigin attribute with this string value. When not defined (the default) no crossOrigin attribute is added. Recommended values are not defined (the default); ""; or "anonymous" (For all valid values see HTML attribute: documentation)|
|cfg||object [required]||The configuration passed to the Application Insights SDK during initialization.|
Connection String Setup
For either the NPM or Snippet setup, you can also configure your instance of Application Insights using a Connection String. Simply replace the field with the field.
Sending telemetry to the Azure portal
- Uncaught exceptions in your app, including information on
- Stack trace
- Exception details and message accompanying the error
- Line & column number of error
- URL where error was raised
- Network Dependency Requests made by your app XHR and Fetch (fetch collection is disabled by default) requests, include information on
- Url of dependency source
- Command & Method used to request the dependency
- Duration of the request
- Result code and success status of the request
- ID (if any) of user making the request
- Correlation context (if any) where request is made
- User information (for example, Location, network, IP)
- Device information (for example, Browser, OS, version, language, model)
- Session information
Telemetry initializers are used to modify the contents of collected telemetry before being sent from the user's browser. They can also be used to prevent certain telemetry from being sent, by returning . Multiple telemetry initializers can be added to your Application Insights instance, and they are executed in order of adding them.
The input argument to is a callback that takes a as an argument and returns a or . If returning , the telemetry item is not sent, else it proceeds to the next telemetry initializer, if any, or is sent to the telemetry collection endpoint.
An example of using telemetry initializers:
Most configuration fields are named such that they can be defaulted to false. All fields are optional except for .
Instrumentation key that you obtained from the Azure portal.
|accountId||An optional account ID, if your app groups users into accounts. No spaces, commas, semicolons, equals, or vertical bars||string|
|sessionRenewalMs||A session is logged if the user is inactive for this amount of time in milliseconds.||numeric|
|sessionExpirationMs||A session is logged if it has continued for this amount of time in milliseconds.||numeric|
|maxBatchSizeInBytes||Max size of telemetry batch. If a batch exceeds this limit, it is immediately sent and a new batch is started||numeric|
|maxBatchInterval||How long to batch telemetry for before sending (milliseconds)||numeric|
|disableExceptionTracking||If true, exceptions are not autocollected.||boolean|
|disableTelemetry||If true, telemetry is not collected or sent.||boolean|
|enableDebug||If true, internal debugging data is thrown as an exception instead of being logged, regardless of SDK logging settings. Default is false. |
Note: Enabling this setting will result in dropped telemetry whenever an internal error occurs. This can be useful for quickly identifying issues with your configuration or usage of the SDK. If you do not want to lose telemetry while debugging, consider using or instead of .
|loggingLevelConsole||Logs internal Application Insights errors to console. |
1: Critical errors only,
2: Everything (errors & warnings)
|loggingLevelTelemetry||Sends internal Application Insights errors as telemetry. |
1: Critical errors only,
2: Everything (errors & warnings)
|diagnosticLogInterval||(internal) Polling interval (in ms) for internal logging queue||numeric|
|samplingPercentage||Percentage of events that will be sent. Default is , meaning all events are sent. Set this if you wish to preserve your data cap for large-scale applications.||numeric|
|autoTrackPageVisitTime||If true, on a pageview, the previous instrumented page's view time is tracked and sent as telemetry and a new timer is started for the current pageview. It is sent as a custom metric named in and is calculated via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less). Default is false.||boolean|
|disableAjaxTracking||If true, Ajax calls are not autocollected.||boolean|
|disableFetchTracking||If true, Fetch requests are not autocollected.||boolean|
|overridePageViewDuration||If true, default behavior of trackPageView is changed to record end of page view duration interval when trackPageView is called. If false and no custom duration is provided to trackPageView, the page view performance is calculated using the navigation timing API.||boolean|
|maxAjaxCallsPerView||Default - controls how many Ajax calls will be monitored per page view. Set to -1 to monitor all (unlimited) Ajax calls on the page.||numeric|
|disableDataLossAnalysis||If false, internal telemetry sender buffers will be checked at startup for items not yet sent.||boolean|
|disableCorrelationHeaders||If false, the SDK will add two headers ('Request-Id' and 'Request-Context') to all dependency requests to correlate them with corresponding requests on the server side.||boolean|
|correlationHeaderExcludedDomains||Disable correlation headers for specific domains||string|
|correlationHeaderExcludePatterns||Disable correlation headers using regular expressions||regex|
|correlationHeaderDomains||Enable correlation headers for specific domains||string|
|disableFlushOnBeforeUnload||If true, flush method will not be called when onBeforeUnload event triggers||boolean|
|enableSessionStorageBuffer||If true, the buffer with all unsent telemetry is stored in session storage. The buffer is restored on page load||boolean|
|cookieCfg||Defaults to cookie usage enabled see ICookieCfgConfig settings for full defaults.||ICookieCfgConfig|
|If true, the SDK will not store or read any data from cookies. Note that this disables the User and Session cookies and renders the usage blades and experiences useless. isCookieUseDisable is deprecated in favor of disableCookiesUsage, when both are provided disableCookiesUsage takes precedence.|
(Since v) And if is also defined it will take precedence over these values, Cookie usage can be re-enabled after initialization via the core.getCookieMgr().setEnabled(true).
|alias for |
|cookieDomain||Custom cookie domain. This is helpful if you want to share Application Insights cookies across subdomains.|
(Since v) If is defined it will take precedence over this value.
|alias for |
|cookiePath||Custom cookie path. This is helpful if you want to share Application Insights cookies behind an application gateway.|
If is defined it will take precedence over this value.
|alias for |
|isRetryDisabled||If false, retry on (partial success), (timeout), (too many requests), (internal server error), (service unavailable), and 0 (offline, only if detected)||boolean|
|isStorageUseDisabled||If true, the SDK will not store or read any data from local and session storage.||boolean|
|isBeaconApiDisabled||If false, the SDK will send all telemetry using the Beacon API||boolean|
|onunloadDisableBeacon||When tab is closed, the SDK will send all remaining telemetry using the Beacon API||boolean|
|isBrowserLinkTrackingEnabled||If true, the SDK will track all Browser Link requests.||boolean|
|appId||AppId is used for the correlation between AJAX dependencies happening on the client-side with the server-side requests. When Beacon API is enabled, it cannot be used automatically, but can be set manually in the configuration.||string|
|enableCorsCorrelation||If true, the SDK will add two headers ('Request-Id' and 'Request-Context') to all CORS requests to correlate outgoing AJAX dependencies with corresponding requests on the server side.||boolean|
|namePrefix||An optional value that will be used as name postfix for localStorage and cookie name.||string|
|enableAutoRouteTracking||Automatically track route changes in Single Page Applications (SPA). If true, each route change will send a new Pageview to Application Insights. Hash route changes () are also recorded as new page views.||boolean|
|enableRequestHeaderTracking||If true, AJAX & Fetch request headers is tracked.||boolean|
|enableResponseHeaderTracking||If true, AJAX & Fetch request's response headers is tracked.||boolean|
|distributedTracingMode||Sets the distributed tracing mode. If AI_AND_W3C mode or W3C mode is set, W3C trace context headers (traceparent/tracestate) will be generated and included in all outgoing requests. AI_AND_W3C is provided for back-compatibility with any legacy Application Insights instrumented services. See example here.||or|
(v or earlier)
|enableAjaxErrorStatusText||If true, include response error data text in dependency event on failed AJAX requests.||boolean|
|enableAjaxPerfTracking||Flag to enable looking up and including additional browser window.performance timings in the reported (XHR and fetch) reported metrics.||boolean|
|maxAjaxPerfLookupAttempts||The maximum number of times to look for the window.performance timings (if available), this is required as not all browsers populate the window.performance before reporting the end of the XHR request and for fetch requests this is added after its complete.||numeric|
|ajaxPerfLookupDelay||The amount of time to wait before re-attempting to find the window.performance timings for an request, time is in milliseconds and is passed directly to setTimeout().||numeric|
|disableInstrumentationKeyValidation||If true, instrumentation key validation check is bypassed.||boolean|
|enablePerfMgr||When enabled (true) this will create local perfEvents for code that has been instrumented to emit perfEvents (via the doPerf() helper). This can be used to identify performance issues within the SDK based on your usage or optionally within your own instrumented code. More details are available by the basic documentation. Since v||boolean|
|perfEvtsSendAll||When enablePerfMgr is enabled and the IPerfManager fires a INotificationManager.perfEvent() this flag determines whether an event is fired (and sent to all listeners) for all events (true) or only for 'parent' events (false <default>).|
A parent IPerfEvent is an event where no other IPerfEvent is still running at the point of this event being created and it's parent property is not null or undefined. Since v
|idLength||Identifies the default length used to generate new random session and user id values. Defaults to 22, previous default value was 5 (v or less), if you need to keep the previous maximum length you should set this value to 5.||numeric|
From version , cookie management is now available directly from the instance and can be disabled and re-enabled after initialization.
If disabled during initialization via the or configurations, you can now re-enable via the ICookieMgr function.
The instance based cookie management also replaces the previous CoreUtils global functions of , , and . And to benefit from the tree-shaking enhancements also introduced as part of version you should no longer uses the global functions.
Cookie Configuration for instance based cookie management added in version
|Name||Description||Type and Default|
|domain||Custom cookie domain. This is helpful if you want to share Application Insights cookies across subdomains. If not provided uses the value from root value.||string|
|path||Specifies the path to use for the cookie, if not provided it will use any value from the root value.||string |
|getCookie||Function to fetch the named cookie value, if not provided it will use the internal cookie parsing / caching.|
|setCookie||Function to set the named cookie with the specified value, only called when adding or updating a cookie.|
|delCookie||Function to delete the named cookie with the specified value, separated from setCookie to avoid the need to parse the value to determine whether the cookie is being added or removed. If not provided it will use the internal cookie parsing / caching.|
Simplified Usage of new instance Cookie Manager
Enable time-on-page tracking
By setting , the time a user spends on each page is tracked. On each new PageView, the duration the user spent on the previous page is sent as a custom metric named . This custom metric is viewable in the Metrics Explorer as a "log-based metric".
Correlation generates and sends data that enables distributed tracing and powers the application map, end-to-end transaction view, and other diagnostic tools.
The following example shows all possible configurations required to enable correlation, with scenario-specific notes below:
If any of your third-party servers that the client communicates with cannot accept the and headers, and you cannot update their configuration, then you'll need to put them into an exclude list via the configuration property. This property supports wildcards.
The server-side needs to be able to accept connections with those headers present. Depending on the configuration on the server-side it is often necessary to extend the server-side list by manually adding and .
Access-Control-Allow-Headers: , ,
If you are using OpenTelemtry or Application Insights SDKs released in or later, we recommend using WC3 TraceContext. See configuration guidance here.
Single Page Applications
By default, this SDK will not handle state-based route changing that occurs in single page applications. To enable automatic route change tracking for your single page application, you can add to your setup configuration.
Currently, we offer a separate React plugin, which you can initialize with this SDK. It will also accomplish route change tracking for you, as well as collect other React specific telemetry.
Use only if you are not using the React plugin. Both are capable of sending new PageViews when the route changes. If both are enabled, duplicate PageViews may be sent.
Browser/client-side data can be viewed by going to Metrics and adding individual metrics you are interested in:
Select Browser and then choose Failures or Performance.
Source Map Support
The minified callstack of your exception telemetry can be unminified in the Azure portal. All existing integrations on the Exception Details panel will work with the newly unminified callstack.
Link to Blob storage account
You can link your Application Insights resource to your own Azure Blob Storage container to automatically unminify call stacks. To get started, see automatic source map support.
Drag and drop
- Select an Exception Telemetry item in the Azure portal to view its "End-to-end transaction details"
- Identify which source maps correspond to this call stack. The source map must match a stack frame's source file, but suffixed with
- Drag and drop the source maps onto the call stack in the Azure portal
Application Insights Web Basic
For a lightweight experience, you can instead install the basic version of Application Insights
This version comes with the bare minimum number of features and functionalities and relies on you to build it up as you see fit. For example, it performs no autocollection (uncaught exceptions, AJAX, etc.). The APIs to send certain telemetry types, like , , etc., are not included in this version, so you will need to provide your own wrapper. The only API that is available is . A sample is located here.
Upgrading from the old version of Application Insights
Breaking changes in the SDK V2 version:
- To allow for better API signatures, some of the API calls, such as trackPageView and trackException, have been updated. Running in Internet Explorer 8 and earlier versions of the browser is not supported.
- The telemetry envelope has field name and structure changes due to data schema updates.
- Moved to . Some fields were also changed ( --> ).
- To manually refresh the current pageview ID (for example, in SPA apps), use .
To keep the trace ID unique, where you previously used , now use . Both ultimately end up being the operation ID.
- To manually refresh the current pageview ID (for example, in SPA apps), use .
If you're using the current application insights PRODUCTION SDK () and want to see if the new SDK works in runtime, update the URL depending on your current SDK loading scenario.
Download via CDN scenario: Update the code snippet that you currently use to point to the following URL:
npm scenario: Call to download the full ApplicationInsights script from CDN and initialize it with instrumentation key:
Test in internal environment to verify monitoring telemetry is working as expected. If all works, update your API signatures appropriately to SDK V2 version and deploy in your production environments.
At just 36 KB gzipped, and taking only ~15 ms to initialize, Application Insights adds a negligible amount of loadtime to your website. By using the snippet, minimal components of the library are quickly loaded. In the meantime, the full script is downloaded in the background.
While the script is downloading from the CDN, all tracking of your page is queued. Once the downloaded script finishes asynchronously initializing, all events that were queued are tracked. As a result, you will not lose any telemetry during the entire life cycle of your page. This setup process provides your page with a seamless analytics system, invisible to your users.
- 15 ms overall initialization time
- Zero tracking missed during life cycle of page
As an SDK there are numerous users that cannot control the browsers that their customers use. As such we need to ensure that this SDK continues to "work" and does not break the JS execution when loaded by an older browser. While it would be ideal to not support IE8 and older generation (ES3) browsers, there are numerous large customers/users that continue to require pages to "work" and as noted they may or cannot control which browser that their end users choose to use.
See GitHub for full details on IE8 support
For the latest updates and bug fixes consult the release notes.
We quickly laid out the snack (which we had taken from the store) and poured it in a pile. It was easy to communicate with him. He turned out to be a pleasant conversationalist.Aprenda mais sobre sua aplicação e seus usuários com Application Insights
After all, I knew that nothing would ever happen. Why didn't she tell me to stop, not follow her to the call of the deceiving lights. Why didn't you say: "Roll your lip. Nothing shines for you!".
- Sunrise plumbing fixtures
- Holiday card puns
- Bus 600 route
- The verb studio
- Navy quotas 2017
- Recovery birthday quotes
- Umgc electives
- Slope ceiling adapter
- Rv storage pismo
- Denison bluetooth
- Utopia campground
- Disband family sharing
- Ksl rims
No, I can't be happy about that, but I'm glad. Regina was distracted by her reflections, and the score was 40:30, not in her favor. She doesn't drink whiskey and cola. Of alcohol, Mills prefers martini. Emma, you rightly said that you made your choice, you are here.