Updated 10 may 2011, added some clarification
Startup tasks are the new way to run a script or file in Windows Azure, and we can run them under Elevated (Administrator) context. For this to work, add the assembly you want to add to the GAC to your project and set copy local to true. GacUtil is not installed in the Azure WebRole, so you’ll have to supply it as well.
Edit the .CSDEF file and add a Startup task with executionContext elevated:
<ServiceDefinition name=“MyProject“ >
In the RegisterGAC.cmd enter the following 2 lines:
gacutil /nologo /i .Microsoft.IdentityModel.dll exit /b 0
Remember that the startup task runs from the /BIN folder. This file must be saved as Unicode without “byte code order”, choose advanced save options: UTF-8 without signature
There is also the possibility to set the taskType:
- Simple – needs to complete before the role continues
- Background – runs parallel with the role (startup)
- Foreground – runs parallel with the role, but needs to finish before the role can shutdown
Also remember that the right .Net 4.0 gacutil.exe is in this directory: C:Program FilesMicrosoft SDKsWindowsv7.0AbinNETFX 4.0 Tools
Using Windows Update packages (MSU)
Another way to install the Windows Identity Framework (WIF) is to include the windows update package for WIF.
Download the correct WIF msu file for the Azure Role:
v1 = server 2008 = Windows6.0-KB974405-x64.msu
v2 = server 2008 R2 = Windows6.1-KB974405-x64.msu
And add it to your project and set “Copy to Output Directory Always” to “Copy Always”.
To run a MSU update package use the following startup task:
@echo off sc config wuauserv start=demand wusa.exe "%~dp0Windows6.1-KB974405-x64.msu" /quiet /norestart sc config wuauserv start=disabled exit /b 0
12 comments
I still seem to be getting problem even having independantly tried both methods. I’ve confirmed the files are being copied to the bin (before being packaged) and am able run the cmd scripts on the local machine. But once I try to use it in the cloud the same error pops up. Anyway ideas?
Alex Young
Make sure the Microsoft.IdentityModel.dll is set to copy local, and add more debugging info to the command script to figure out if there is a directory wrong.
Log in with Remote Desktop and run the Command script from the bin folder to see if it is executed.
Most problems are folder related.
Erik Oppedijk
The first one did not work for me, because my machine is a 32 bit and Windows Azure is 64 bit.
In the second one, I was not sure whether Azure is Windows Server 2008 or Windows Server 2008 R2. I tried Windows6.0-KB974405-x64.msu and the problem got solved for me. Thanks for this blog.
Pranav Mishra
i have tried second procedure ,Worked perfect ….
Thanks 🙂
Jeevan Reddy
[…] have tried resolving this error using the blog post https://blogs.infosupport.com/adding-assemblies-to-the-gac-in-windows-azure/. But none wrked out for me! help me out on […]
Azure Service Configuration Error - Windows Azure Blog
First one worked for me. Allthough I had to try several times.
I think you need to include gacutil.exe.config and gacutilrc.dll as well.
Lours
We need to add gacutil.exe and its config file.
ajay singh thakur
[…] into the GAC. I found a post that discusses how to create a script to do the installation on https://blogs.infosupport.com/adding-assemblies-to-the-gac-in-windows-azure/ where it installs the Windows Identity files and then sets the windows update service to on demand, […]
Windows Azure and Cloud Computing Posts for 4/10/2012+ - Windows Azure Blog
Gracias!! Funcionó a la primera 🙂 agregando el config del gacutil
Ana Martinez
[…] into this in the emulator, and the solution was to add this dll to the GAC. I googled and found these instructions regarding how to install a DLL into the GAC as an azure startup task. Everything works as long as I […]
Correct gacutil command syntax for azure running windows server 2012 - Windows Azure Blog
Very Important to add gacutil.exe.config file to the Project. I wasted a lot of time debugging to figure the issue.
Calvin
[…] other alternative is to use a use a startup task to add MVC3 to theGAC. https://blogs.infosupport.com/adding-assemblies-to-the-gac-in-windows-azure/explains the process kind of. That way you could add MVC3 to the GAC for applications that need it. […]
Web Role with MVC4 Just Recycles on Windows Azure - Windows Azure Cloud Integration Engineering - Site Home - MSDN Blogs