Monthly Archives: September 2013

Enable the Hibernate button on Windows 8

I freshly installed Windows 8.1 RTM on my old laptop and the setup beautifully recognized all my devices and installed the drivers for them. However the Hibernate option didn’t show up in the shutdown menu. As a first try I enabled hibernation with the powercfg /h on command with no success.

It seems that after enabling hibernation, the Hibernate button must be enabled as well. On the left pane of the Power Options dialog you can find the Choose what the power buttons do action:

hibernate-power-options

When the Define power buttons and turn on password protection dialog is displayed you can turn on the Hibernate button with administrative privileges:

hibernate-shutdown-settings

Now you can click Hibernate in the old world:

hibernate-shutdown-menu

And in the new world as well:

hibernate-shutdown-charm

 

Technorati-címkék: ,
Advertisements

ASP.NET 4.0 forms authentication issues with IE11

As I mentioned earlier, solutions that rely on User-Agent sniffing may break, when a new browser or a new version of an existing browser is released. Unfortunately because ASP.NET also contains browser-specific code, the new Internet Explorer 11 may cause some problems there as well.

Lucky coincidence, that one day after my previous post Eric Lawrence published an article about IE11 and User-Agent sniffing. Some interesting facts from his article:

  • The IE team deliberately designed the UA string to cause most sniffing logic to interpret it either Gecko or WebKit and not as previous IE version.
  • During the summer the ASP.NET team published a set of patches to fix the IE11 issues in earlier .NET versions. For example KB2836939 is for .NET 4.0, and you can find more links in Eric’s article.

The issue we experienced was on an older server that was running ASP.NET 4.0. IE11 sent the forms authentication cookie to the server, but the server completely ignored it. In the web.config file the forms element didn’t contain the cookieless attribute, because the default UseDeviceProfile worked perfectly before, however now we had to set it to UseCookies to make the authentication work with IE11 as well.

The patch mentioned earlier was not installed on this server, and we have not seen similar issues on .NET 4.5.

By the way setting cookieless="UseCookies" explicitly is a good security practice.

 

Technorati-címkék: ,,,

IE11 User-Agent string

Windows 8.1 comes with the new Internet Explorer 11 which sends the following User-Agent string in the HTTP requests to the webservers:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

To see what’s the point here, compare this with the old versions’ UA strings:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

The format completely changed, what’s more the MSIE token is completely removed! This change may cause issues, if your code contains browser-specific parts, because your old code probably won’t recognize the new browser.

Even the ASP.NET platform contains codes which respect the client’s browser, and unfortunately there were some issues in the past when some features didn’t work well with the new browsers.

Thankfully the browser detection feature of ASP.NET is completely customizable with .browser files, and if you check the C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\ie.browser file on Windows 8.1, you will see that it already contains a section for IE11:

<browser id="InternetExplorer" parentID="Mozilla">
   <identification>
     <userAgent match="Trident/(?'layoutVersion'[7-9]|0*[1-9]\d+)(\.\d+)?;(.*;)?\s*rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)))" />
     <userAgent nonMatch="IEMobile" />
     <userAgent nonMatch="MSIE " />
   </identification>
   <capabilities>
     <capability name="browser"              value="InternetExplorer" />
     <capability name="version"              value="${version}" />
     <capability name="majorversion"         value="${major}" />
     <capability name="minorversion"         value="${minor}" />
     <capability name="layoutEngine"         value="Trident" />
     <capability name="layoutEngineVersion"  value="${layoutVersion}" />
     <capability name="type"                 value="InternetExplorer${major}" />
   </capabilities>
</browser>

My personal experience is that old web applications must be thoroughly tested with the new IE11, even if you didn’t write any browser-dependent code, because the platform you rely on may also contain such logic. You must be especially careful if you run ASP.NET 4.0 on the server (probably because you cannot do the in-place upgrade to 4.5).

In a next post I will write about some issues we saw while we tested our ASP.NET apps with IE11.

 

Technorati-címkék: ,,

Outlook 2013 Folder Pane Disappears

Unfortunately there is a bug in the Office 2013 September Public Update which you may notice when you start Outlook and see an empty folder pane:

outlook-2013-folder-pane

Don’t worry, your folders are not lost, you can minimize the unused screen estate, and you can even work with your folders using the minimized features of the folder pane. So Outlook remains usable, but very uncomfortable.

Microsoft confirmed the bug and they are working hard to update the update: Outlook 2013 Folder Pane Disappears After Installing September 2013 Public Update

So far the solution is to uninstall the KB2817630 update from the Programs and Features window. However, it is tricky! The same update appears twice in the list and you have to uninstall both:

KB2817630

The other trick is that after the removal the patch may be reinstalled when your system is updated next time. Although Microsoft removed the patch from the Windows Update servers, if you have a local WSUS installation you have to manually Decline this update.

 

Technorati-címkék: ,,