首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure WebRole CloudConfigurationManager.GetSetting返回空

Azure WebRole CloudConfigurationManager.GetSetting返回空
EN

Stack Overflow用户
提问于 2013-12-06 20:02:24
回答 4查看 4.6K关注 0票数 3

我有一个带有WebRole项目的Azure解决方案。

代码语言:javascript
复制
Windows Azure Tools version: 2.2

packages.config项目中的WebRole包含以下内容:

代码语言:javascript
复制
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.2.0" targetFramework="net45" />

我已经"Nuget启用包还原“,因此假设正确的包是链接和引用在构建。

但是,当我部署(登录到TFS online,它构建了解决方案并开始部署到Azure)时,下面的行在我的文本框Azure Compute模拟器上工作得很好,这一行返回null:

代码语言:javascript
复制
CloudConfigurationManager.GetSetting("StorageConnectionString")

我读过几篇关于这个问题的文章,但到目前为止还没能解决这个问题。是否有一个包/SDK不兼容的地方,我不知道?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-23 04:01:40

问题在于我是如何配置Azure项目的,下面我将对此进行解释。我还在在MSDN论坛上提出这个问题上得到了一些帮助。

TLDR;在Visual中,我的项目被设置为带有WebRole的Azure服务。然而,我是部署到一个"Azure网站“的生产项目。Azure Cloud与WebRoleAzure网站有着重要的区别。

这里有更多的细节: Azure可以作为两种不同的项目类型和服务配置的一部分来托管一个网站/webservice。当您访问Azure门户并创建一个新服务时,您可以创建:

  1. 天青云服务
  2. Azure网站

Azure Cloud服务可能包含也可能不包含WebRole。如果是这样的话,那么它将可以通过类似于这个http://servicename.cloudapp.net的端点访问。另一方面,Azure网站则托管在像这个http://websitename.azurewebsites.net这样的端点上。这些区别远远超出了域名的范围。

WebRole与网站

WebRole (可以在Visual中作为“云服务”解决方案的一部分创建)连接到您创建的云服务的其余部分,因此可以引用和使用属于云服务的资源,例如存储在.cscfg文件中的设置和配置。这些设置由CloudConfigurationManager库正确解析和引用。

但是,网站是一个独立的项目,与部署到IIS express中的web应用程序非常类似。网站本质上映射到Visual中的"Web应用程序“解决方案。即使您在web应用程序中引用了CloudConfigurationManager库,也不知道如何处理这种类型的项目。

网站解决方案

无论如何,这次我将我的项目重新创建为"Web应用程序“解决方案(而不是"Cloud”)。我将设置存储在Web.Config (以及Web.Debug.Config和Web.Release.Config口味)中:

代码语言:javascript
复制
<configuration>

    <appSettings>
        <add key="MyAppSettingKey" value="MyAppSettingValue" />
    </appSettings>

    <system.web>
        <compilation debug="true" targetFramework="4.5.1" />
    </system.web>

</configuration>

在代码中,我使用了ConfigurationManager库:

代码语言:javascript
复制
string mySetting = ConfigurationManager.AppSettings["MyAppSettingKey"];

进一步讨论

可以随意查看此MSDN线程,以进一步讨论这个主题。

票数 5
EN

Stack Overflow用户

发布于 2014-04-09 15:32:53

在从AzureSDK2.2升级到2.3之后,我也遇到了类似的问题。似乎在我升级了我的项目之后,解决方案->启动项目从Azure项目更改为Web项目。结果是,当我运行解决方案时,Web角色项目是在IIS Express中运行的,而不是在Azure模拟器中运行的。将解决方案的启动项目更改为Azure项目解决了这个特殊问题。

票数 2
EN

Stack Overflow用户

发布于 2015-05-05 09:50:15

根据我的理解,

如果您没有云服务或在本地运行,CloudConfigurationManager.GetSetting将查看web.config。

请将您的设置从ServiceConfiguration.Cloud.cscfg文件添加到web.config文件中,它将工作。

例如:

在ServiceConfiguration.Cloud.cscfg文件中:

<Setting name="SqlServerConnectionString" value="your connections string" />

添加

<add key="SqlServerConnectionString" value="your connections string" />

如果你有什么问题请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20432586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档