我正在实现here描述的组合Web /辅助角色方案,您只需将以下内容添加到您的辅助角色中:
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");
}
}
问题,如帖子的评论中所述,该工作进程无法读取web.config,因此您必须添加app.config。还注意到app.config不会自动部署。
所以我的问题是如何配置我的项目以便部署app.config?
我已将app.config添加到我的项目中,将Build Action设置为“Content”,并“始终复制”
这项工作在EMULATOR中很精细,但在部署到Azure时却没有。
注意:我注意到在模拟器中创建了一个projectname.dll.config,但是在部署到Azure时却没有。 我正在使用VS2010,Windows Azure Tools 2011
我知道有些人会建议使用.cscfg文件,但我的许多组件都是从web.config / app.config获取设置: Elmah,瞬态故障处理客户端,诊断,电子邮件等......
答案 0 :(得分:3)
请仔细阅读this blog post。它详细解释了Windows Azure Web角色与完整IIS中发生的情况。
您需要做的是添加 WaIISHost.exe.config 文件(复制到输出=始终复制)。并将所需的所有配置放在该文件中。这是因为,您的代码(RoleEntryPoint)存在于WaIISHost.exe进程中,而不是您的pdojectName.dll进程。
答案 1 :(得分:3)
对于我使用Azure SDK 1.8并使用发布从Visual Studio部署我的Web Worker角色,我必须包含一个名为的配置文件。使用我的设置的ProjectName.Dll.config。在windows azure中运行时,web角色无法获取app.config中的配置。并且app.config文件未转换为ProjectName.Dll.config并自动添加到部署包的bin文件夹中,因此您必须手动创建它并将其设置为始终复制。
答案 2 :(得分:2)
我正在使用Azure SDK 2.0和OS Family 3,并且对此非常困惑。所以我创建了一个MVC 4.0网站,其中包含各种答案中建议的所有4个配置文件。那就是:
除Web.config之外的所有内容都设置为“如果更新则复制”。
在configs文件中我写道:
<appSettings>
<add key="AppSettingFile" value="[NameOfConfigFile]"/>
</appSettings>
在WebRole.cs中,我有以下代码:
public class WebRole : RoleEntryPoint
{
public override void Run()
{
string appSetting = ConfigurationManager.AppSettings["AppSettingFile"] ?? "No config file found";
Trace.TraceInformation("Config file: " + appSetting);
while (true)
{
...
}
}
}
使用4 .config文件部署时的结果: “配置文件:App.config”。所以App.config必须是答案,对吗?
错误!仅部署Web.config和App.config时的结果: “配置文件:找不到配置文件”。嗯很奇怪。
使用Web.config,App.config和[AssemblyName] .dll.config进行部署时的结果: “配置文件:[AssemblyName] .dll.config”。所以[AssemblyName] .dll.config必须是答案,对吗?
错误!仅使用Web.config和[AssemblyName] .dll.config部署时的结果: “配置文件:找不到配置文件”。 WTF!
仅使用Web.config和WaIISHost.exe.config部署时的结果: “配置文件:找不到配置文件”。
使用Web.config,App.config和WaIISHost.exe.config部署时的结果: “配置文件:找不到配置文件”。 WTF!
所以我的结论是你需要有3个或4个配置文件才能配置Web项目的Worker角色。
这显然是一个错误。就个人而言,我认为MS的意图是从WaIISHost.exe.config更改为App.config(通常与Worker Roles和.NET一致)。但App.config仅在存在所有4个.config文件时使用。
所以现在我正在使用Web.config以及App.config和[AssemblyName] .dll.config,它们包含完全相同的内容。
希望继续使用Azure SDK 2.x,我们只能使用App.config和Web.config。