Skip to content

Instantly share code, notes, and snippets.

View patkleef's full-sized avatar

Patrick van Kleef patkleef

View GitHub Profile
@patkleef
patkleef / ApplicationInsightsGlobal.asax
Created March 13, 2017 19:19
Application Insights Blog - ApplicationInsightsGlobal.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
TelemetryConfiguration.Active.TelemetryInitializers.Add(new ClientIpHeaderTelemetryInitializer());
}
@patkleef
patkleef / ApplicationInsightsTelemetryInitializers.config
Last active March 13, 2017 19:20
Application Insights Blog - ApplicationInsightsTelemetryInitializers.config
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web">
<Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters>
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web" />
@patkleef
patkleef / ApplicationInsightsTelemetryProcessors.config
Created March 13, 2017 19:22
Application Insights Blog - ApplicationInsightsTelemetryProcessors.config
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
<Add Type="ApplicationInsightDemoSite.NotFoundFilter, ApplicationInsightDemoSite" />
</TelemetryProcessors>
@patkleef
patkleef / ApplicationInsightsEventTracking.js
Created March 13, 2017 19:24
Application Insights Blog - ApplicationInsightsEventTracking.js
$(document).ready(function() {
$(".home-page-link").click(function() {
window.appInsights.trackEvent("homePageLinkClicked", $(this).text());
});
});
@patkleef
patkleef / ApplicationInsightsEventTracking.cs
Created March 13, 2017 19:24
Application Insights Blog - ApplicationInsightsEventTracking.cs
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
@patkleef
patkleef / ApplicationInsightsTraceTracking.cs
Created March 13, 2017 19:25
Application Insights Blog - ApplicationInsightsTraceTracking.cs
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
if (ModelState.IsValid)
{
var postVariables = Request.Form.ToString();
var dic = new Dictionary<string, string>();
@patkleef
patkleef / ApplicationInsightsTelemetryProcessorsGlobal.asax
Last active March 13, 2017 19:26
Application Insights Blog - ApplicationInsightsTelemetryProcessorsGlobal.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
TelemetryConfiguration.Active.TelemetryInitializers.Add(new ClientIpHeaderTelemetryInitializer());
var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
@patkleef
patkleef / ApplicationInsightsClientIpHeaderTelemetryInitializer.cs
Last active March 13, 2017 19:27
Application Insights Blog - ApplicationInsightsClientIpHeaderTelemetryInitializer.cs
/// <summary>
/// Implements initialization logic.
/// </summary>
/// <param name="platformContext">Http context.</param>
/// <param name="requestTelemetry">Request telemetry object associated with the current request.</param>
/// <param name="telemetry">Telemetry item to initialize.</param>
protected override void OnInitializeTelemetry(HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Location.Ip))
{
@patkleef
patkleef / ApplicationInsightsNotFoundFilter.cs
Last active March 13, 2017 19:27
Application Insights Blog - ApplicationInsightsNotFoundFilter.cs
public class NotFoundFilter : ITelemetryProcessor
{
private ITelemetryProcessor Next { get; set; }
public NotFoundFilter(ITelemetryProcessor next)
{
this.Next = next;
}
public void Process(ITelemetry item)
@patkleef
patkleef / ApplicationInsightsAiHandleErrorAttribute.cs
Created March 19, 2017 18:38
Application Insights Blog - ApplicationInsightsAiHandleErrorAttribute.cs
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AiHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
{
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
var ai = new TelemetryClient();