如何解决Visual Studio或Web作业不尊重host.json
我有一个工作正常的队列处理应用程序。我现在试图说服队列触发器一次只处理一个项目。我认为host.json设置正确,
但是当我运行该应用程序时(无论是在Azure中作为Web作业,还是在Visual Studio中本地运行),我都会看到以下信息:
我怀疑我缺少真正明显的东西,所以想知道以前是否有人遇到过这个问题。我找到了几篇文章,但没有任何文章可以让我了解我在做什么错。
添加program.cs的内容。我尝试在AddAzureAppConfiguration条目之后添加“ host.json”,但这没什么区别。
class Program
{
static async Task Main()
{
//var builder = new HostBuilder();
var builder = Host.CreateDefaultBuilder();
builder.ConfigureLogging((context,a) =>
{
a.AddConsole();
});
builder.ConfigureAppConfiguration((hostContext,config) =>
{
config.AddUserSecrets(
"5aa19112-5ff7-467b-b062-f37c3654872d"); // This is automatic for a web app,but not for a console app
var settings = config.Build();
var connectionString = settings.GetConnectionString("AzureAppConfiguration");
config.AddAzureAppConfiguration(connectionString);
});
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureServices((hostContext,services) =>
{
services.AddMemoryCache();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
解决方法
我认为您正在使用Azure WebJobs SDKv3.x。 在v3.x中,hosts.json不适用于WebJob 。
相反,版本3.x使用标准的ASP.NET Core API,因此您需要使用ConfigureWebJobs方法对其进行配置:
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage(a => {
a.BatchSize = 8;
a.NewBatchThreshold = 4;
a.MaxDequeueCount = 4;
a.MaxPollingInterval = TimeSpan.FromSeconds(15);
});
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
,
您的问题似乎与此GitHub issue类似,如果您的应用程序包含[assembly: WebJobsStartup(typeof(Startup))]
,则可以将其删除以使host.json
正常工作。
如果您仍然想使用DI,则可以使用[assembly: FunctionsStartup(typeof(Startup))]
。
如果不是[assembly: WebJobsStartup(typeof(Startup))]
引起的,您可以向我们提供更多信息,以便我们重现您的问题并帮助您解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。