Category: Tips, Tricks & Notes

Testing Legacy Versions of Internet Explorer

The emulation tools in Internet Explorer’s F12 Developer tools are a godsend when you have to support older, legacy versions of IE in your solution, but sometimes you’ll run into issues where even the emulation mode isn’t close enough to the real thing.  That’s exactly what happened to me recently.  I was developing a new feature in an ASP.NET MVC application using Angular.js on the client and the page wasn’t updating after calling the server to refresh, but only in IE 9.  Weird, it worked just fine on my machine in IE 11 emulating IE 9, but I had just watched the QA engineer do the exact same thing in IE 9 and it had definitely not worked.

Luckily Microsoft has been kind enough to provide virtual machine images that can be downloaded for just this purpose on the modern.ie web site (http://dev.modern.ie/tools/vms/).  To use these virtual machines you will need to have Hyper-V, VirtualBox,  Virtual-PC, or VMWare installed.  In my case I chose to use VirtualBox, but I also have seen VMWare work with the same steps.

Steps To Configure Your Machine

In order to get your machine configured so you can run IE9 (or another version) in a virtual machine running against your local machine follow these steps.

  1. Download and install the latest version of VirtualBox from Oracle @ https://www.virtualbox.org/wiki/Downloads
  2. Download the appropriate Virtual Machine Image from modern.ie @ http://dev.modern.ie/tools/vms/
  3. Virtual Machine: [Choose the version of IE and Platform you wish to test]
  4. Platform: Select VirtualBox
  5. Click Download .zip
  6. Extract the contents of the zip and save it someplace safe.
  7. The zip should contain a file named “IE9 – Win7.ova” or something similar.
  8. Launch VirtualBox
  9. Select File Import Appliance
  10. Browse to the file you saved in step 3 (IE9 – Win7.ova) and click next
  11. Optional: I adjusted the memory from 512MB to 2GB (I would recommend this if you have the memory to spare on your host PC.)
  12. Click Import and wait…
  13. The import process took about 40 minutes on my machine…
  14. From an Elevated Command Prompt (Run as Administrator) Execute: netsh http add urlacl url=http://myhostname:2000/ user=everyone
    1. Substitute whatever your machine name is for the host name (myhostname)
    2. Substitute the port number you are using when running your application in IIS Express.
  15. Edit your IIS Express Application Configuration file (at My Documents > IIS Express > config > applicationhost.config)
  16. Find the binding for the application you would like to debug
  17. <binding protocol=”http” bindingInformation=”*:2000:localhost” />
  18. Copy this line and paste it as a new line directly underneath the existing line in the XML
  19. Change “localhost” to the name of your computer.
  20. <binding protocol=”http” bindingInformation=”*:2000:MyComputerName” />
  21. Start the application running in Visual Studio.
  22. Some of the documentation I found online suggests that you may need to run Visual Studio with elevated permissions (Run as Administrator), but that has not been my experience. I suspect I may already have whatever permission is needed on my account, your mileage may vary.
  23. Launch your virtual machine
  24. Browse to http://MyComputerName:2000/

Note: I expected to have to make a Windows Firewall rule to allow the traffic but I did not have to in order to get it working on my machine. If you have issues, that is the first place I would look. I would probably just turn off windows firewall all together and test. If that works, turn it back on and create a rule.

Note: I ran into an issue today where I needed to log in and I didn’t know/remember the password for the IEUser account on the virtual machine.  You can find that information in the Virtual Machine Instructions document.

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

Today was the first time I have worked on our Azure application in quite a while, so I was unpleasantly surprised when I got the latest version of the code, clicked run and was greeted with :

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

CommunicationObjectFaultedException

After a lot of poking around and reinstalling the SDK I finally found the solution.  Apparently when running an application under Azure SDK version 1.3 the development environment needs to modify the web config in some way.  However, since I am using TFS for source control, the file was marked readonly and could not be edited.

The work around seemed pretty simple, just remove the readonly flag and off we go.  The next problem is that every time you get latest from source control the file gets marked readonly again and now it won’t run. 🙁  To get around this just add a post-build command to your project to automatically remove the readonly flag when you run your project.   To do this right-click on your project in the Solution Explorer and select properties.  Go to the Build Events tab and enter the command : attrib -r “$(ProjectDir)Web.Config” .

attrib -r "$(ProjectDir)Web.Config"

Windows Developer Preview–Keyboard Shortcuts

After Installing Windows 8 Developer Preview in a Virtual Machine or on older hardware, you will immediately find that the interface is a bit clunky without touch of any kind.  Hopefully the following list of keyboard shortcuts will help to alleviate the pain.

  • The Windows Key takes you back to the Start Screen.
  • Alt + Tab brings up the application switcher.
  • Windows Keys + Tab cycles through the running applications.
  • Windows Key + C or hovering over the bottom left corner of the screen with your mouse brings up the Charms Menu.
  • Windows Key + F opens the search screen (or you can just start typing on the Start Screen).
  • Windows Key + Z brings up the application bars.
  • Windows Key + D takes you to your desktop.
  • Windows Key + L Locks the system (as usual).
  • Windows Key + I brings up the Settings.
  • Windows Key + E opens Windows Explorer on your desktop.
  • Windows Key + R takes you to your desktop and opens the Run Prompt.
  • CTRL-ALT-DEL brings up a screen to log off, shut down, switch users, etc.
  • Right clicking a Tile on the Start Screen brings up options (Unpin, changes size, etc.)
  • Right Clicking in a Metro app brings up the application bars.
  • The mouse scroll wheel pans through the items on your Start Screen, although it seems a bit buggy on my VM.

Run Windows Developer Preview in VMware Player 4.0

Shortly after build I attempted  to install Windows Developer Preview in a Virtual Machine running on VMware Player without much success.  After playing with it for a while I finally gave up and moved on.  However, over the weekend, I realized that VMware had released VMware Player 4.0.  After downloading and installing the new player I was able to install the Windows Developer Preview in VMware Player with out any issues.

The process was fairly simple and straight forward, just make sure to download the ISO before you start.

  1. Select Create a New Virtual Machine from the Welcome to VMware Player Panel on the start up screen.
  2. Select the option “I will install the operating system later.”
  3. Select the Option for Microsoft Windows and then select Windows 7 x64 from the drop down.
  4. Give your VM a name and choose the location to save the files.
  5. I then selected to create an 80GB Virtual Disk.  (The Build PC has a 64 GB SSD, I figured a little extra space couldn’t hurt! Smile)
  6. On the next screen I choose Customize Hardware.
  7. I set the Memory to use 2GB (I only have 4GB in my desktop).
  8. I set the Processors to 2 Cores (I have 4 Cores).
  9. I set the CD/DVD to “Use ISO Image file: “. and browsed to the ISO image.
  10. Then click close to exit the customize hardware dialog and Finish to create your new VM.
  11. Now just boot the VM and let the installation begin.  (Note: you will want to use the custom install option when the installer asks)