SDK 2.2的Web角色.config文件的名称是什么

时间:2013-11-03 22:24:15

标签: azure app-config azure-web-roles

我有一个网络角色,我已将RoleEntryPoint扩展到做一些超出网站范围的工作。作为RoleEntryPoint.Run()的一部分,我需要使用ConfigurationManager从.config中读取代码。

虽然这有点不寻常,但使用SDK 1.8我能够确保我的软件包包含[我的项目名称] .dll.config文件。

现在,当我尝试使用.AppSettings.GetSection()时,我已升级到SDK 2.2,但值始终为null,这使我相信它无法找到我的文件。

我尝试过部署工作者角色,而.config文件仍然遵循我目前使用的相同名称模式。

我也尝试过命名文件WaIISHost.exe.config。

我知道理想情况下,这个配置应该包含在.csfg文件中,但我的问题是有人知道我应该调用我的配置文件吗?

更新:

this question的帮助下,我现在知道它正在读取的配置文件的名称是E:\ base \ x64 \ WaIISHost.exe.Config,但我不知道为什么这有改变了,或者我能做些什么来掩盖这一点。

3 个答案:

答案 0 :(得分:3)

经过多次调查和试验后,我终于找到了一个解决方案。

文件的名称仍然是[我的项目名称] .dll.config,但您需要确保此文件位于软件包的approot \ bin \目录中。

我认为我的初始问题是由Copy to Output Directory属性更改为Do Not Copy引起的,尽管我不确定这是怎么发生的。如果您发现自己处于类似情况,只需将具有正确名称的文件添加到项目中,并将Copy to Output Directory设置为Copy Always

一旦我这样做了,我意识到我还有另外一个问题。我需要.config文件才能运行配置转换,但这并没有。为了解决这个问题,我更新了.ccproj文件以获得以下内容:

<PropertyGroup>
    <!-- The first two of these targets are what is defined in the base SDK 2.2 targets file.  When we upgrade we may need to look reassess this. -->
    <CopyRoleFilesDependsOn>
        CopyWebRoleFiles;
        CopyWorkerRoleFiles;
        CopyWebConfigToBin;
    </CopyRoleFilesDependsOn>
</PropertyGroup>
<Target Name="CopyWebConfigToBin">
    <!-- We need to copy the transformed Web.config to the bin directory so that the RoleEntryPoint has access to the config settings.-->
    <Message Text="Copy %(WebRoleReferences.OutputDir)Web.config tp %(WebRoleReferences.OutputDir)\bin\BackOffice.UI.dll.config" Importance="high" />
    <Copy SourceFiles="%(WebRoleReferences.OutputDir)Web.config" DestinationFiles="%(WebRoleReferences.OutputDir)bin\[Name of project].dll.config" />
</Target>

这会添加一个额外的目标,等待所有其他文件都被复制到相应的目录,然后选择web.config并将副本放在bin目录中,并使用正确的名称。

答案 1 :(得分:1)

您是否可以将配置值放入Azure配置文件(.cscfg)而不是使用.config文件?您可以通过cscfg静态方法从RoleEnvironment.GetConfigurationSettingValue读取值。

答案 2 :(得分:0)

此页面解释了为什么它被称为WaIISHost.exe.Config以及您可以将它放在项目中的位置。 http://azure.microsoft.com/blog/2010/12/02/new-full-iis-capabilities-differences-from-hosted-web-core/

与knightpfhor一样,您也可以使用[AssemblyName] .dll.config来放置这些配置。这取决于项目的程序集名称,您可以检查Web角色项目的属性。