Skip to content

Instantly share code, notes, and snippets.

View CameronWills's full-sized avatar

Cameron Wills CameronWills

  • Sydney, Australia
View GitHub Profile
CameronWills /
Last active May 3, 2016 13:53
Blog May 3th 2016 - Convenient Wisdom

Micro-blog - Convenient Wisdom!

For months (years) now, I've been thinking of creating a small blog to share some less-common .NET development and DevOps problems I come across at work, and in particular those that are uncommon or have less-documented solutions. I figure I cant possibly be the only one coming across these problems - so why not share my solutions. Some of these probably belong in Stack Overflow, but then sometimes the question doesn't exist, and answering your own questions to comply with their guidelines seems awkward. So, what simpler micro-blogging platform than Github Gist? It seems fitting for a developer. So here goes!

CameronWills / FormsPersistence.cs
Last active August 23, 2016 10:41
Persists and restores umbraco form files to and from the media IFileSystem storage (Amazon S3 or Azure Blob Storage)
To enable the persist operation, you need to add an AppSetting in your web.config file:
<add key="persistFormsOnChange" value="true" />
This should only be set to true on the Admin/BackOffice server.
CameronWills / AzureBlobLog.cs
Last active October 5, 2016 23:09
A utility class to 'query' the application logs (System.Diagnostics.Trace) stored in Azure Blob storage - recursively descends log folder structure to find log files that match the requested date range and returns the nested log (.csv) files
You will need to get install these two nuget libraries:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
CameronWills /
Last active January 30, 2017 05:30
Git Branching Strategy

When working on our git repositories, this is the general workflow / branching strategy we follow:

  • Development happens on the master branch (this way new developers can start writing code as soon as they've clone the repository)

  • Long-running development on a features/feature_name branch and then merged into master

  • Work to be done by vendors happen on a vendors/vendor_name branch and merged into master after being checked over (use pull requests).

  • Merge master into deploy/production or deploy/qa to trigger the respective deployment in the CI/CD tool.

CameronWills / EpiServerImageService.cs
Last active March 8, 2017 00:17
Implementation of ImageProcessor's IImageService interface for EpiServer - Retrieves EpiServer blobs for processing by ImageProcessor
/// <summary>
/// EpiServer implementation of an ImageProcessor IImageService - provides the episerver image blobs to ImageProcessor for resizing etc.
/// </summary>
public class EpiServerImageService : IImageService
/// <summary>
/// Gets or sets the prefix for the given implementation.
/// <remarks>
/// This value is used as a prefix for any image requests that should use this service.
/// </remarks>
CameronWills / edit-mode.css
Created March 26, 2017 08:28
EpiServer v10 all properties view - Add a red star (*) to required properties / field labels
/* Add a required star (*) to fields marked as required */
.Sleek .epi-form-container__section__row label span.edit-required {
font-weight: bold;
color: red;

Pull Request Checklist

Mark [x] to those completed. Delete sections that don't apply.

[] Fixed CSS errors? [] Fixed JS errors?


CameronWills / IndexingService.cs
Last active October 7, 2020 00:22
Fix for EpiServer crash: BuildResult change, cache key=cindexingservice.svc.1f180bcd
using System;
using System.ServiceModel;
using System.ServiceModel.Activation;
namespace Web.IndexingService
/// <summary>
/// Replacing the logic found in the IndexingService.svc to try and address a bug at where the run-time compiled assembly has a file-change causing the
/// App Domain to shutdown/restart. In some cases the shutdown failed, resulting in two AppDomains to be running. More details here: