Monday, January 31, 2011

Windows Azure SDK: connecting to non SQLExpress Instance

When you want to build an Azure application, but you don’t have SQL Express installed the build action in Visual Studio will fail.
You will receive the following message in your output window:
Windows Azure Tools: Failed to initialize the Development Storage service. Unable to start Development Storage. Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found. Please configure the SQL Server instance for Development Storage using the ‘DSInit’ utility in the Windows Azure SDK.
To fix this you open the Windows Azure SDK Command Prompt:
Windows Azure SDK Command Prompt
And enter the following text:
dsinit /sqlinstance:.
dsinit /sqlinstance:.
This will cause Azure to use the default instance (with no name). You can switch this to whatever you like, just replace the . (dot) by the appropriate MS SQL instance.
The result will look like this:
Development Storage Initialization
Good luck, happy coding.

Monday, January 17, 2011

How to Fix "PageHandlerFactory-Integrated" bad module "ManagedPipelineHandler in IIS7

After setting up a new Windows 7 computer with IIS 7.5 and Visual Studio 2010, I tried to start my ASP.NET 4.0 website using the Local IIS web server. However, right off the bat I was hit with the following IIS error message:

HTTP Error 500.21 - Internal Server Error
Handler 'PageHandlerFactory-Integrated' has a bad module 'ManagedPipelineHandler' in its module list.

Apparently, the reason I was recieving the Internal Server error message was that I had installed SQL Server 2008, after installing Visual Studio 2010, and because of this it corrupted the IIS Machine level configuration files ('If you install VS2010 and then install VS2008 and VS2008 SP1, the configuration files for ASP.NET in IIS only include about 1/2 of the correct .Net 4.0 configuration sections.' read more here).

To repair this problem I ran a full silent repair of the .NET Framework 4.0. Here's how on either a 32 bit or 64 bit computer:

1. Click Start -> All Programs -> Accessories -> Run
2. In the Open textbox paste in the following line (see list of all .NET Framework version install, repair and unistall command lines here):

For silent repair on 32 bit computer with .Net Framework version 4.0.30319 use:

%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

For silent repair on 64 bit computer with .Net Framework version 4.0.30319 use:

%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Client\setup.exe /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart

3. Click OK to start the repair
4. After, the repair ran for a few minutes, I restarted IIS 7.5, and things began to work correctly!

Hopefully, that will work for you...

Sunday, January 9, 2011

Saturday, January 8, 2011

ASP.NET Cookies Expires property is not initialized

It appears that you cannot read is the cookie's expiration date and time - HttpCookie.Expires property. It turns out that when the browser sends cookie information to the server, the browser does not include the expiration information. You can read the Expires property, but it always returns a date-time value of zero.

Browser is responsible for managing cookies; the Expires property is an example of this. The primary purpose of the Expires property is to help the browser perform housekeeping on its store of cookies. From the server's perspective, the cookie either exists or it does not; the expiration is not a useful piece of information on the server side. Therefore, the browser does not provide this information when it sends the cookie. If you are concerned about the expiration date of a cookie, you must reset it.

At times you might want to modify a cookie, perhaps to change its value or to extend its expiration. (Remember that you cannot read a cookie's expiration date because the browser does not pass the expiration information to the server.)

You do not really directly change a cookie, of course. Although you can get a cookie from the Request.Cookies collection and manipulate it, the cookie itself still lives someplace on the user's hard disk. So modifying a cookie really consists of creating a new cookie with new values and then sending the cookie to the browser to overwrite the old version on the client.

The following example shows how you might change the value of a cookie that stores a count of the user's visits to the site:

Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
counter = 0
Else
counter = CInt(Request.Cookies("counter").Value)
End If
counter += 1
Response.Cookies("counter").Value = counter.ToString
Response.Cookies("counter").Expires = DateTime.Now.AddDays(1)

Source