当前位置: 首页 > 编程语言 > C#

AzureWebRoleCloudConfigurationManager.GetSetting返回null分享

时间:2023-04-10 18:52:05 C#

AzureWebRoleCloudConfigurationManager.GetSetting返回null我有一个带有WebRole项目的Azure云解决方案。WindowsAzure工具版本:2.2WebRole项目中的packages.config包含:我“Nuget启用包还原”因此假设在构建期间链接和引用了正确的包。以下行在我的开发箱AzureCompute模拟器上运行良好,但是,当我部署时(在线检查TFS,构建解决方案并开始部署到Azure),此行返回null:CloudConfigurationManager.GetSetting("StorageConnectionString")我已经阅读了其他几个帖子,但到目前为止还没有能够解决这个问题。是否存在我不知道的包/SDK不兼容性?问题原来与我如何配置我的Azure项目有关,我将在下面解释。我也在MSDN论坛上问过这个问题,并在那里得到了一些帮助。TLDR;在VisualStudio中,我的项目设置为具有WebRole的Azure云服务。但是,我正在将项目部署到生产环境中的“Azure网站”。Azure云服务与WebRole和Azure网站之间存在重要差异。以下是更多详细信息:Azure可以托管网站/Web服务作为两种不同项目类型和服务配置的一部分。当您转到Azure门户并创建新服务时,您可以创建:Azure云服务Azure网站Azure云服务可能包含也可能不包含WebRole。如果是,那么它将通过类似于http://servicename.cloudapp.net的端点进行访问。另一方面,Azure网站托管在像http://websitename.azurewebsites.net这样的端点上。差异远远超出域名。WebRole和网站WebRole(您可以在VisualStudio中创建“云服务”解决方案的一部分)连接到您创建的其余云服务,因此可以引用和使用属于云服务的资源,例如存储在.cscfg文件和配置。CloudConfigurationManager库正确解析和引用这些设置。但是,网站是一个单独的项目,就像您部署到IISExpress的Web应用程序一样。网站本质上映射到VisualStudio中的“Web应用程序”解决方案。即使您在Web应用程序中引用CloudConfigurationManager库,它也不知道如何处理此类项目。网站解决方案无论如何,这次我将我的项目重新创建为“Web应用程序”解决方案(而不是“云服务”)。我将设置存储在Web.Config(以及Web.Debug.Config和Web.Release.Config风格)中:在代码中,我使用ConfigurationManager库:stringmySetting=ConfigurationManager.AppSettings["MyAppSettingKey"];进一步讨论请随时查看此MSDN线程以进一步讨论此主题。从AzureSDK2.2升级到2.3后,我遇到了类似的问题。看来我升级项目后,Solution->StartupProject从AzureProject变成了WebRoleProject。结果是,当我运行解决方案时,Web角色项目在IISExpress而不是Azure模拟器中运行。将解决方案的启动项目改回Azure项目可解决此特定问题。据我了解,如果您用完云服务或用完本地服务,CloudConfigurationManager.GetSetting将查看web.config。请将您的设置从ServiceConfiguration.Cloud.cscfg文件添加到web.config文件,它将起作用。例如:在ServiceConfiguration.Cloud.cscfg文件中:添加Letmeknowifyouhaveanyquestions。我在将AzureSDK从2.0升级到2.2后得到了这个。我能解决:以上是C#学习教程:AzureWebRoleCloudConfigurationManager。选择属性。在“应用程序”选项卡下更新AzureSDK。右键单击“管理NuGet包”。在左侧单击更新并更新WindowsAzure.ConfigurationManager。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: