Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combined Azure web role and worker role project not seeing app.config when deployed

I'm implementing the combined web/worker role scenario as described here where you simply add the following to your worker role:

public override void Run()
{
    // This is a sample worker implementation. Replace with your logic.
    Trace.WriteLine("WorkerRole1 entry point called", "Information");
    while (true)
    {
        Thread.Sleep(10000);
        Trace.WriteLine("Working", "Information");
    }
}

The problem, as noted in the post's comments, is that this worker process cant read web.config so you have to add an app.config. It is also noted that app.config does not get deployed automatically.

So my question is how do I configure my project so app.config will get deployed?

I've added app.config to my project, set the Build Action to "Content", and "Copy always"

THIS WORKS FINE IN THE EMULATOR, but not when deployed to Azure.

Note: I noticed in the emulator a projectname.dll.config is created, but not when deployed to Azure. I'm using VS2010, Windows Azure Tools 2011

I know some will suggest using the .cscfg file instead, but many of my components get their settings from web.config/app.config: Elmah, Transient Fault Handling Client, Diagnostics, Email, etc...

like image 838
PeteShack Avatar asked Aug 30 '12 19:08

PeteShack


2 Answers

Please read thoroughly this blog post. It explains in great details what is happening in Windows Azure Web Role with Full IIS.

What you need to do, is to add a WaIISHost.exe.config file (with copy to output = copy always). And put all the configurations you need in that file. This is because, your code (RoleEntryPoint) lives in WaIISHost.exe process, and not your pdojectName.dll process.

like image 192
astaykov Avatar answered Sep 23 '22 07:09

astaykov


For me using Azure SDK 1.8 and deploying my Web Worker Role from the Visual Studio using publish, I had to include a config file, named. ProjectName.Dll.config with my settings. The configuration from app.config is not picked up by the web role when running in windows azure. And the app.config file is not converted into a ProjectName.Dll.config and added automatically to the bin folder of the deployment package, so you have to create it by hand and set it to copy always.

like image 22
sjkp Avatar answered Sep 20 '22 07:09

sjkp