Hire Me

Software Development From The Trenches - Steve Woods' Blog

ASP.NET development, web design, best practices, annoyances and other good stuff. I've even been known to talk about freelancing, time management, client handling - sometimes it's even in video format. Dig in!


Http 500 error when deploying .NET Framework 2.0 application on Windows Server 2012 and IIS 8.5

If you're getting a stock 500 error when attempting to run a legacy .NET application on a Windows Server 2012 instance on IIS 8.5, make sure your application pool ID is set up properly.

On IIS 8.5, the Application Pool Id is normally set to ApplicationPoolIdentity instead of NetworkService - here is how to change it:

  • Open IIS
  • Click on Application Pools
  • Right click the Application Pool in question
  • Click on Advanced Settings
  • Scroll down to where it says "ID"
  • Click on the small button next to "ApplicationPoolIdentity" to change the property
  • Select Network Service from the list
  • Click OK
  • Restart the Application Pool

Also, make sure that your Application Pool is referencing the .NET 2 framework and not the .NET 4 framework.

Wednesday, February 1, 2017 at 12:13 PM
into csharp code gotcha iis server




They're taking over...

Friday, January 27, 2017 at 1:39 AM
into captcha code robotics fun




Should freelance developers charge for estimates and proposals?

When you're a freelance web developer, it can sometimes be tempting to go full-on with a client and give them a detailed plan of their project with your costs - then not charge them anything for your efforts.

Here's why I think this is a bad idea and what I think you should do to protect your time investment in thinking through someones business idea - before you hand over your knowledge.

Tuesday, January 10, 2017 at 2:11 PM
into video freelance clients




Why is System.Threading.Tasks.Task`1 [System.Threading.Tasks.VoidTaskResult]; appearing in my ASP.NET Core Razor Views?

Pretty simple really - you're not calling the correct method to render your partial views.

Instead of:

@Html.RenderPartialAsync("MyPartial", Model);

You need to use:

@await Html.PartialAsync("MyPartial", Model);

Simples :)

Sunday, January 8, 2017 at 11:48 AM
into csharp code gotcha




SelectListItems not appearing in the Edit view when Scaffolding Controllers and Views with MVC Core in Visual Studio 2015

When scaffolding Controllers and Views (for say, a simple CMS Admin functionality for a given Object), you may find that your Select dropdowns are not populated with any SelectListItems (in the form of <option> tags).

This is because there is a bug in the Visual Studio 2015 scaffolder which, while correctly implemented in the Create view, is not in the Edit view.

You will end up with:

<select asp-for="PropertyId" asp-items="ViewBag.MyItems" />

But what you need is:

<select asp-for="PropertyId" asp-items="ViewBag.MyItems"></select>

Easy to miss.

Saturday, January 7, 2017 at 3:08 PM
into csharp code gotcha




Older Posts

The Internet of Things

Be careful what you wish for


How to require that a checkbox is selected when submitting a form in ASP.NET MVC

Learn how to correctly validate whether or not a checkbox has been selected when submitting a form in ASP.NET MVC


HSBC announce a new UI for their Internet Banking Service

A much needed overhaul of the HSBC banking system is on its way, here's hoping it solves some of the key issues the current one has.


Geolocation not working on non-HTTPS domains with Google Chrome

Why geolocation no longer works on websites with Google Chrome unless they're using a secure connection


Implementing a PayPal Payment Button with ASP.NET WebForms

How to add a hosted PayPal button to an ASP.NET WebForms page


OpenVPN won't connect on Windows 10 - Solved

Learn how to get OpenVPN working again on Windows 10 after updating to the latest version


What makes someone a bad programmer?

Why raw technical ability has no bearing on whether you're a good programmer or not


How to force lowercase URLs in ASP.NET 5

Learn how to force ASP.NET MVC to generate lower-case URLs on all generated links


Solved - jQuery Mobile Click Event Not Firing After AJAX Page Request Completes

How to make sure jQuery events stay bound to their controls when refreshing elements of a page via an AJAX call


Windows 10 Wireless Issues - No Connections Available [SOLVED]

Make sure you uninstall the Cisco VPN client from Windows 8.1 before you upgrade to Windows 10 or you will have wireless connectivity issues.


Prevent Superscripts and Subscripts from Affecting Line-Height

How to stop sup and sub tags from affecting the line heights of a paragraph in HTML


What A Website Developer Does All Day

A picture tells a thousand words - what your website developer does all day


Unable to add 'Global.asax' to the Web site. An unknown WinINet error has occurred (code 12113).

Find out what to do when Visual Studio reports a WinINet error code 12113 when deploying a website via Web Publish


TimeSpanExtensions .ToFriendlyString()

A C# .NET extension method showing how to convert a TimeSpan interval into a friendly string format


Including a Day Suffix when formatting a Date in C#

How to format a datetime in C# with a suffix on the day


Custom Authentication Attributes in ASP.NET MVC

How to set up a custom authentication attribute for controller methods in ASP.NET MVC


301 Rewrite Rules can break MVC forms

Why sometimes 301 rewrite rules can break ASP.NET MVC forms


PottyMouth - A Simple C# Swear Word Filter

PottyMouth - A C# extension method for filtering swear words


Speaking about flying Drones from a First Person View at FPVHub 2013

A brief overview of my speaking session at FPVHub Northern Meet 2013


How to rename a SQL Server table from within Visual Studio 2010

How to rename a SQL Server table from within Visual Studio 2010


Incorporating common ViewData into multiple Controllers in ASPNET MVC without duplication

Incorporating common ViewData into multiple Controllers in ASPNET MVC without duplication