How to set up Raygun on your .NET website

Posted written by Paul Seal on January 09, 2018 Umbraco

What is Raygun?

Raygun is an intelligent bug tracking service which gives you deep insight into the errors happening on your website and who it is happening to. You can find out so much information to help you reproduce the errors.

It even has real-time monitoring where you can see who is on your site now and what the experience is like for them. You can see the pages they visited on your site and the order they visited them in. You can see if any errors occurred during their session and how long different pages take to load.

You can also record bugs with the logged in user id, so you know exactly who has been affected by the error and you can get in touch with them before they even realise there was an error.

Create an account

  1. Go to raygun.com, click on the Free Trial button in the navigation menu.
  2. Enter your details
  3. Enter your application name and notification preferences, then click Next.
  4. When it asks you which language or framework you wish to monitor, choose ASP.NET
1

How to set it up for ASP.NET

  1. Open your project in Visual Studio
  2. Install the Raygun Nuget Package in your project:
Install-Package Mindscape.Raygun4Net
  1. Add the following settings to your web.config file at the root of your project:
<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <configSections>
    <section name="RaygunSettings" type="Mindscape.Raygun4Net.RaygunSettings, Mindscape.Raygun4Net" />
  </configSections>

  <RaygunSettings apikey="xxxxxxxxxxxxxxxxxxxxxxxx" />

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="RaygunErrorModule" type="Mindscape.Raygun4Net.RaygunHttpModule" />
    </modules>
  </system.webServer>

</configuration>
  1. Go to Application Settings in the side navigation to get your API key, so you can replace the one in the settings above.
  2. Do a build and run your application. You should now start to see errors coming through in the dashboard, if you have any.

Real User Monitoring

If you want to see realtime error from people using your site, then you can set up the Real User Monitoring.

  1. Add this script to the top of the <body> of your master template.
<span class="token tag"><span class="token punctuation"><</span>script <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript">
  <span class="token operator">!</span><span class="token keyword">function</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span>b<span class="token punctuation">,</span>c<span class="token punctuation">,</span>d<span class="token punctuation">,</span>e<span class="token punctuation">,</span>f<span class="token punctuation">,</span>g<span class="token punctuation">,</span>h<span class="token punctuation">)</span><span class="token punctuation">{</span>a<span class="token punctuation">.</span>RaygunObject<span class="token operator">=</span>e<span class="token punctuation">,</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token operator">=</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token operator">||</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
  <span class="token punctuation">(</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">.</span>o<span class="token operator">=</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">.</span>o<span class="token operator">||</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>arguments<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">,</span>f<span class="token operator">=</span>b<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">,</span>g<span class="token operator">=</span>b<span class="token punctuation">.</span><span class="token function">getElementsByTagName</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
  f<span class="token punctuation">.</span><span class="token keyword">async</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span>f<span class="token punctuation">.</span>src<span class="token operator">=</span>d<span class="token punctuation">,</span>g<span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">insertBefore</span><span class="token punctuation">(</span>f<span class="token punctuation">,</span>g<span class="token punctuation">)</span><span class="token punctuation">,</span>h<span class="token operator">=</span>a<span class="token punctuation">.</span>onerror<span class="token punctuation">,</span>a<span class="token punctuation">.</span>onerror<span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span>c<span class="token punctuation">,</span>d<span class="token punctuation">,</span>f<span class="token punctuation">,</span>g<span class="token punctuation">)</span><span class="token punctuation">{</span>
  h<span class="token operator">&amp;&amp;</span><span class="token function">h</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span>c<span class="token punctuation">,</span>d<span class="token punctuation">,</span>f<span class="token punctuation">,</span>g<span class="token punctuation">)</span><span class="token punctuation">,</span>g<span class="token operator">||</span><span class="token punctuation">(</span>g<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">.</span>q<span class="token operator">=</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">.</span>q<span class="token operator">||</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>a<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">.</span>q<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
  e<span class="token punctuation">:</span>g<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span>document<span class="token punctuation">,</span><span class="token string">"script"</span><span class="token punctuation">,</span><span class="token string">"//cdn.raygun.io/raygun4js/raygun.min.js"</span><span class="token punctuation">,</span><span class="token string">"rg4js"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="token tag"><span class="token punctuation"></</span>script<span class="token punctuation">></span></span>
  1. Then add this below it, remeber to replace xxxxxxxx with your real api key:
<span class="token tag"><span class="token punctuation"><</span>script <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script language-javascript">
  <span class="token function">rg4js</span><span class="token punctuation">(</span><span class="token string">'apiKey'</span><span class="token punctuation">,</span> <span class="token string">'xxxxxxxxxxxxxxxxxxxxxxxx'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">rg4js</span><span class="token punctuation">(</span><span class="token string">'enableCrashReporting'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">rg4js</span><span class="token punctuation">(</span><span class="token string">'enablePulse'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="token tag"><span class="token punctuation"></</span>script<span class="token punctuation">></span></span>

That's it, you're all set to start tracking errors in your application, and even in realtime.

Optional extra

If you want to you can track individual users by passing through their user details.

  1. Just add this to the bottom of the script above
<script type="text/javascript">
  rg4js('setUser', {
    identifier: 'users_email_address_or_unique_id',
    isAnonymous: false,
    email: '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4c393f293e3f1329212d2520132d28283e293f3f0c2823212d2522622f2321">[email&#160;protected]</a>',
    firstName: 'Firstname',
    fullName: 'Firstname Lastname'
  });
</script>

Watch my video to find out more about Raygun

Watch on YouTube