将使用设置文件的应用程序移植到Azure函数时,是否有必要消除对文件的依赖?
我想编写一个功能应用程序,以将数据从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\
在门户网站中运行时
答案 0 :(得分:2)
This Jon Gallant's blog建议您将可选参数添加到AddJsonFile,因为部署时该参数不存在:
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
请注意,在Azure中,这将引用'appsettings.json'文件
答案 1 :(得分:2)
将使用设置文件的应用程序移植到Azure函数时,是否有必要消除对文件的依赖?
不是必需的,我们仍然可以使用应用程序所需的设置文件。我们只需要确保设置文件的路径正确即可。