gpt4 book ai didi

c# - Azure 基于时间的函数在发布后不会触发

转载 作者:行者123 更新时间:2023-12-03 06:06:56 29 4
gpt4 key购买 nike

我在 10 年的时间里开发了许多 Http 触发功能(.NET Framework)。我爱他们。我还开发了一些定时器触发的 Azure 函数。

过去 15 天以来,我一直在与愚蠢的问题作斗争,但找不到解决方案。

我开发了完整的 Azure 函数 (.NET 6) 并发布到 Azure,但它从未按时调用(5 分钟)。通过不同的实验进行故障排除。

这里我有一个简单的案例供您理解。

我将事情分解为简单的步骤。从头开始

我从门户创建了一个 Azure 函数(基于计时器),它每 5 分钟调用一次。我下载了发布配置文件,在 C# .NET6/7 中创建了一个 Azure 函数(没有任何更改),然后发布到门户。 5 分钟后调用。

当我安装Entity Framework Nuget包时,没有更改代码,发布了该功能。它不会调用 Azure 函数(永远)。

始终将间隔设置为“0 */5 * * * *”

Additional Info : I do not want to create function Logging In Azurefrom Visual studio

您以前遇到过这个问题吗?您建议我尝试什么?

这是我的函数的代码片段

public class LateNotice
{
[FunctionName("LateNotice")]
public void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}

最佳答案

Time trigger 中将此引用用于具有依赖注入(inject)的 Azure Functions 上的 Entity Framework 。感谢@Kunal Borkar .

enter image description here

代码:

    public class MyTimerFunction
{
private readonly MyDbContext dbContext;

public MyTimerFunction(MyDbContext dbContext)
{
this.dbContext = dbContext;
}

[FunctionName("MyTimerFunction")]
public void Run([TimerTrigger("0 * * * * 5"
#if DEBUG
, RunOnStartup = true
#endif
)] TimerInfo myTimer, [DurableClient] IDurableOrchestrationClient starter, ILogger log, ExecutionContext context)
{
try
{

var csv = GetCSVDetails.GetCSVContent(Path.Combine(context.FunctionAppDirectory, "Resources", "new_user_credentials.csv"));
if (csv != null)
{
foreach (var line in csv)
{
var username = line.Username;

// Check if a record with the same username already exists
var existingRecord = dbContext.Test.FirstOrDefault(x => x.Username == username);

if (existingRecord != null)
{

log.LogInformation($"Updated existing record for Username: {username}");
}
else
{

var test = new Data
{
Username = username,
Password = line.Password,
AccesskeyID = line.AccesskeyID,
Secretaccesskey = line.Secretaccesskey,
Consoleloginlink = line.Consoleloginlink
};

dbContext.Test.Add(test);
}
}

dbContext.SaveChanges();
}
else
{
log.LogWarning(" data is null or invalid.");
}

log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
catch (Exception e)
{
log.LogCritical(e.Message);
log.LogCritical(e.StackTrace);

if (e.InnerException != null)
{
log.LogCritical("Inner Exception: " + e.InnerException.Message);
log.LogCritical("Inner Exception Stack Trace: " + e.InnerException.StackTrace);
}
}
}
}

 public class StartUp : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
string connectionString = "Azuresqlconnectionstring";
builder.Services.AddDbContext<MyDbContext>(
options => SqlServerDbContextOptionsExtensions.UseSqlServer(options, connectionString));
}
}


输出:

enter image description here

关于c# - Azure 基于时间的函数在发布后不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77214956/

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