gpt4 book ai didi

c# - Azure WebRole CloudConfigurationManager.GetSetting 返回 null

转载 作者:行者123 更新时间:2023-11-30 13:46:36 25 4
gpt4 key购买 nike

我有一个包含 WebRole 项目的 Azure 云解决方案。

Windows Azure Tools version: 2.2

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

<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.2.0" targetFramework="net45" />

我已经“Nuget Enable Package Restore”,因此假设在构建过程中链接和引用了正确的包。

以下行在我的开发盒 Azure 计算模拟器上运行良好,但是,当我部署时(在线 checkin TFS,它构建解决方案并开始部署到 Azure),此行返回 null:

CloudConfigurationManager.GetSetting("StorageConnectionString")

我已经阅读了有关此问题的其他几篇文章,但到目前为止还无法解决该问题。是否存在我不知道的包/SDK 不兼容的地方?

最佳答案

问题出在我配置 Azure 项目的方式上,我将在下面解释。我也asked the question in MSDN forums并在那里得到了一些帮助。

TLDR; In Visual Studio, my project was set up as an Azure Cloud Service with a WebRole. However, I was deploying the project to an "Azure Website" in production. There are important differences between an Azure Cloud Service with a WebRole and an Azure Website.

以下是更多详细信息:Azure 可以托管网站/Web 服务作为两种不同项目类型和服务配置的一部分。当您转到 Azure 门户并创建新服务时,您可以创建:

  1. Azure 云服务
  2. Azure 网站

Azure 云服务可能包含也可能不包含WebRole。如果是,则可以通过如下所示的端点进行访问:http://servicename.cloudapp.net 。另一方面,Azure 网站托管在像这样的端点上 http://websitename.azurewebsites.net 。差异远远超出了域名的范围。

WebRole 与网站

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

然而,网站是一个独立的项目,很像部署到 IIS Express 的 Web 应用程序。网站本质上映射到 Visual Studio 中的“Web 应用程序”解决方案。即使您在 Web 应用程序中引用了这种类型的项目,CloudConfigurationManager 库也不会知道如何处理它。

网站解决方案

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

<configuration>

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

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

</configuration>

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

string mySetting = ConfigurationManager.AppSettings["MyAppSettingKey"];

进一步讨论

欢迎查看this MSDN thread进一步讨论这个话题。

关于c# - Azure WebRole CloudConfigurationManager.GetSetting 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com