gpt4 book ai didi

c# - 我可以、如何向 Azure Function 提供设置文件?

转载 作者:太空狗 更新时间:2023-10-29 23:05:01 26 4
gpt4 key购买 nike

将使用设置文件的应用程序移植到 Azure Function 时,是否有必要消除对该文件的依赖?

我想编写一个函数应用程序来将数据从 Xero 导入到 Azure sql 数据库中。我正在使用的 Xero SDK 需要一个 appsettings.json 文件。

因此,当函数运行时,我收到错误

System.Private.CoreLib: Exception while executing function:
FunctionXeroSync. Xero.Api: The type initializer for
'Xero.Api.Infrastructure.Applications.Private.Core' threw an exception.
Microsoft.Extensions.Configuration.FileExtensions: The configuration file
'appsettings.json' was not found and is not optional. The physical path is
'C:\Users\kirst\AppData\Local\AzureFunctionsTools\Releases\2.6.0\cli\appsettings.json'.

我尝试通过 VS2017 项目发布选项卡上的管理应用程序设置链接放入相关设置。显然这失败了。我还可以使用其他方法吗?

这是api中的相关代码。我不想修改它,这样我就可以使用官方的 nuget 包。

namespace Xero.Api
{
public class XeroApiSettings : IXeroApiSettings
{
public IConfigurationSection ApiSettings { get; set; }

public XeroApiSettings(string settingspath)
{

var builder = new ConfigurationBuilder()
.AddJsonFile(settingspath)
.Build();

ApiSettings = builder.GetSection("XeroApi");
}
public XeroApiSettings() : this("appsettings.json")
{
}

public string BaseUrl => ApiSettings["BaseUrl"];

public string CallbackUrl => ApiSettings["CallbackUrl"];

public string ConsumerKey => ApiSettings["ConsumerKey"];

public string ConsumerSecret => ApiSettings["ConsumerSecret"];

public string SigningCertificatePath => ApiSettings["SigningCertPath"];

public string SigningCertificatePassword => ApiSettings["SigningCertPassword"];

public string AppType => ApiSettings["AppType"];

public bool IsPartnerApp => AppType?.Equals("partner", StringComparison.OrdinalIgnoreCase) ?? false;
}
}

当我添加时

    log.LogInformation("base directory: "+AppDomain.CurrentDomain.BaseDirectory);

到我得到的函数

 D:\Program Files (x86)\SiteExtensions\Functions\2.0.12095-alpha\32bit\

在门户中运行时

最佳答案

When porting an application that uses a settings file to an Azure Function, is it necessary to remove reliance on the file?

没有必要,我们仍然可以使用应用程序所需的设置文件。我们只需确保设置文件的路径正确即可。

  1. appsettings.json放在函数项目下,并设置复制到output/publish目录。

    set file property

  2. 在Azure Function方法签名中添加ExecutionContext上下文,用于查找当前函数应用程序目录(appsettings.json所在的位置)。

  3. 在 Azure Function 中传递 appsettings.json 的有效路径来初始化 XeroApiSettings。

    var xeroApiSettings = new XeroApiSettings(context.FunctionAppDirectory+"/appsettings.json");

关于c# - 我可以、如何向 Azure Function 提供设置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52361509/

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