gpt4 book ai didi

c# - 使用 ConfigurationManager 访问 v3.5 Azure WebJob 中的 App.config

转载 作者:行者123 更新时间:2023-12-03 03:11:55 25 4
gpt4 key购买 nike

问题:ConfigurationManager 无法访问 v3.5 Azure WebJob 中的 App.config

问题:我怎样才能让它发挥作用?

*背景*

我继承了一个非常旧的 Web 应用程序,它必须在 .Net 3.5 应用程序池下作为 Windows Azure Web 应用程序运行。

有一个相应的服务必须转换为 Azure WebJob(运行几个小时并需要访问网站文件)。

我的问题是,WebJob 必须是 .Net v3.5 应用程序才能在相应的 Web 应用程序中运行(它们共享相同的应用程序池,因此 v4.5 Web 作业无法部署到 v3.5)网络应用程序)。

这意味着我无法使用普通的 WebJob NuGet 包,例如 Windows Azure Configuration Manager,据我所知,它允许 System.Configuration.ConfigurationManager 类以正常方式访问 App.config,从而允许加载包含基于 EDMX 的 EntityFramework ObjectContext 的引用库它们的连接字符串和应用程序设置可以通过各地的各种代码进行访问。代码在 Web 应用程序和 Web 作业之间共享,因此我需要一种在两者之间保持一致的配置方法。

将 WebJob 作为 v4.5 运行可以使其使用 ConfigurationManager 正常工作,但是一旦我切换到 v3.5(我必须这样做才能使 Web 应用程序正常工作),我必须删除所有不兼容的 WebJob Nuget软件包包括 Windows Azure 配置管理器。 ConfigurationManager 将不再加载 AppSettings,没有错误,它只是为 AppSettings 返回任何内容。

我的问题是 - 如何使 ConfigurationManager 加载已部署的 App.config 而不使用那些不兼容的 NuGet 包。我查看了 Microsoft.WindowsAzure.Configuration.dll 中的代码,但我看不到它如何使 ConfigurationManager 实际工作,我一定是找错了地方。

最佳答案

运行一些 v4.6 与 v3.5 应用程序池测试(完全相同的代码库 - 除了 Azure WebJobs Publish 之外没有安装 NuGet 包)后,我发现在 v3.5 应用程序池中运行的 Web 作业根本无法加载他们的配置文件。

顺便说一句,RSACryptoServiceProvider.ImportParameters 在 v3.5 下也会爆炸。

以下内容可强制加载配置文件。

class Program
{
static void Main()
{
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"D:\home\site\wwwroot\App_Data\jobs\triggered\DataImportWebJob\[TheAppName].exe.config");

感谢Using ConfigurationManager to load config from an arbitrary location

关于c# - 使用 ConfigurationManager 访问 v3.5 Azure WebJob 中的 App.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197667/

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