Learn MS NET

Our journey learning how to write .NET

Running Bash on Ubuntu on Windows 10

During the //Build 2016 conference, Microsoft announced that the Bash shell and other GNU/Linux command line tools would soon be able to directly run on the Windows platform natively.  I think as people start to use this and get familiar with Bash it will help people moving from the Linux world or people who want to get familiar with the Bash shell.

I have used the shell on Linux and am somewhat familiar with it but most of my time has been spent in the Windows world developing with that platform. Therefore preventing me from really using it to it’s potential. I am interested now that it is available to start playing with it and see how it works on the window platform.

Gabe Aul announced the release of Windows 10 build #14316 to the Windows Insider Fast-Ring. This is the first build of Windows 10 that offers the Windows Subsystem for Linux. One of the pieces needed to run Bash on Ubuntu on Windows.

How to get Bash on Ubuntu on Windows installed

After you have the updated to the new build, there are some steps that need to be completed to get this up and running.


  1. Turn on Developer Mode
    Open Settings –> Update and Security –> For Developers –> Select the Developer Mode radio button
  2. Enable the Windows Subsystem for Linux (beta)
    Search for “Turn Windows features on and off”
    Scroll down and make sure that the “Windows Subsystem for Linux (Beta)” feature is selected.
    Click OK and reboot (this is required to allow the next step).
    Another option is to use PowerShell
    - Open a PowerShell prompt as administrator and run:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  3. Open a command prompt and run “bash” and follow the instructions.
  4. Once the installation completes you will be able to run bash from the command prompt or use the shortcut in the Start Menu.

Enjoy and check out what is possible with this new addition to our Windows environment.

Beta 1 of DotNetNuke 8 has been released

For anyone looking to see the changes that are coming for DNN, Beta 1 has been released to Codeplex.

For anyone looking to see the changes that are coming for DNN, Beta 1 has been released to Codeplex. This release is basically a minor upgrade from the latest CTP 7 and is meant to start the stabilizing for the release.  Some features have been cut for the time being as they were not going to meet the target for release.

Key Features

  • Performance Enhancements
  • DnnImageHandler
  • Settings API
  • Bug fixes
  • Default.css API

Breaking Changes

  • Telerik control wrappers moved to separate assembly

Features Moved to Forge/GitHub

  • SiteLog
  • Newsletter
  • Vendors/Banners
  • Navigation Providers

Postponed Features

  • DCC
  • oAuth

Canceled Features

  • HMAC

Previously Delivered Features

  • MVC Module type
  • SPA Module type
  • Separate Admin modules:
    • Configuration Manager
    • Console
    • Dashboard
    • Google Analytics
    • Languages
    • Lists
    • Event Viewer
    • Module Creator
    • Recycle Bin
    • Sitemap
    • Site Wizard
    • SQL
    • Page Manager
    • Themes
  • Quick Settings Menu
  • Incremental upgrades
  • CKEditor as the default HTML editor


  • ASP.Net 4.5.1
  • ASP.Net MVC 5.1.1
  • ASP.Net WebAPI 2.1

You can view the current source code in the DNN 8.0 GitHub repository
NOTE: This is a preview release and is not intended for production use.

Visual Studio 2015 is being released

The RTM version of Visual Studio 2015 is being released today.  For developers, I think this wi

The RTM version of Visual Studio 2015 is being released today.  For developers, I think this will be a huge change as they are looking more towards cross development on other platforms with VS then strictly using it to develop for Windows platforms.

The .NET Framework 4.6 will be released as well today.  Mobile development is being expanded to include IOS, Android and Windows platforms. Game development has been expanded to include tools for targeting Unity, Unreal and other platforms.  The Roslyn compiler is being released for use with C# and VB.

For anyone interested there will be a Final Release Event at 8:30am PDT

ASP.NET 5 Project structure part 1–global.json

For anyone who has been following along and trying to get familiar with the new structure of ASP.NET

For anyone who has been following along and trying to get familiar with the new structure of ASP.NET 5 there are may changes to be aware of. Taking a look at an new empty ASP.NET 5 project shows us some interesting new items in our folder structure as well as some that are familiar from the past with some new uses.


As you can see from the image we have two folders in the solution. The first one at the top is called Solution Items, the second is called src. Most people who have looked at projects on Github or CodePlex will be familiar with this style of layout for most projects found in those sites.

SolutionExplorerAs we can see in the image to the left we have global.json placed in the Solution Items folder. This file contains the following:

    "projects": [ "src", "test" ], 
    "sdk": {
         "version": "1.0.0-beta4"


As we can see from the file listing we have a “projects”: item which specifies paths to where the compiler will find the projects source code. Which contains two values: “src” and “test”. “src” is the other folder that we have in our solution structure, but we do not currently have a “test” folder.  At this time the empty project structure is assuming that there will be some test projects added which would be found in a “test” folder under our solution.  This is also the place that we could add other src projects that we may want to use that are outside of our current project. In a later post I will try to explain how this could be used during debugging.

The “sdk” item in the file specifies the version of DNX(.Net Execution Environment that Visual Studio will use when opening the solution.  It is placed here so that when we have multiple projects we can avoid a scenario where there could be different versions specified for different projects.

In part 2 of our series I will explain the use of the project.json file

How to stop spam registrations on your DNN sites

After installing a new version of DNN and starting to resurrect my Learn MS NET site from the ashes.

After installing a new version of DNN and starting to resurrect my Learn MS NET site from the ashes.  I was hoping with all the new changes to DNN since my last version of the site which if I remember correctly was based on DNN 6.0 and an older version of the DNN Blog, that I wouldn’t have the issue of users being automatically created.  I took the liberty of adjusting the user registrations settings to require at least the DNN Captcha to be used to hopefully slow them down.

Didn’t help in the last few days there have been close to 100 new users created.  So I have decided to implement a little stronger solution then what comes out of the box.  My main reason for this is that when I had the older version of the site it at one time had about 200,000 users auto created.  Really a drag on a blog when they aren’t being used.  Also I had put up a WordPress site for a few months to see if that would interest my blogging experience.  I liked it but was not interested in the learning curve to work with it.

At this time there are two solutions available to fix the issue:

1. The first solution is found in the wiki at DNN software http://www.dnnsoftware.com/wiki/replacing-registration-page-with-custom-and-blocking-the-default-register-page. This solution involves creating a custom registration form and blocking access to the default register page.

2. The second solution form Interactive Webs http://www.interactivewebs.com/blog/index.php/dotnetnuke-modules/dotnetnuke-dnn-spam-registrations-problem-fixed/, involves replacing the default captcha with Recaptcha from Google.

Both solutions have their merits, I think the first one will be more effective in the long run as it completely customizes the registration and prevents a bot from knowing what the url is to automatically register at the DNN site in question.  The second although good depends on the functionality of the Recaptcha control not failing.

Hope this helps anyone having issues with this like I have in the past.