我有一个.NET Core 2.2 WebJobs v3控制台应用程序,其中包括处理EventGridTrigger的功能。主要方法是:
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddEventGrid();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
// If the key exists in settings, use it to enable Application Insights.
var instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsights(o => o.InstrumentationKey = instrumentationKey);
}
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
函数Run方法是:
[FunctionName("ProcessWeatherRequest")]
public static async Task Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log)
{
log.LogInformation("InSysWebJobGetWeather.ProcessWeatherRequest EventGridTrigger function received an event.");
log.LogInformation($"Subject: {eventGridEvent.Subject}");
log.LogInformation($"Time: {eventGridEvent.EventTime}");
log.LogInformation($"Data: {eventGridEvent.Data}");
}
我正在使用Docker容器化应用程序,并尝试在Azure Kubernetes Service中运行它。我在AKS中运行其他几个WebJob函数,但它们使用TimerTriggers或ServiceBusTriggers。他们工作正常。与EventGridTrigger的区别在于,我需要将WebHook终结点添加到Azure上的事件网格主题。但是,我构建的WebJobs应用程序似乎没有公开适当的端点。
我确保在Docker文件中公开了端口80和443。
EXPOSE 80
EXPOSE 443
将应用程序部署到AKS时,我还添加了一个服务,该服务包括FQDN为
的静态外部终结点insys-web-job-get-weather-aks.westus.cloudapp.azure.com
我试图将“事件网格主题”中的WebHook添加到:
https://insys-web-job-get-weather-aks.westus.cloudapp.azure.com/runtime/webhooks/EventGrid
但出现以下错误:
部署失败,出现以下错误:{“ code”:“ Url 验证”,“消息”:“尝试验证提供的端点 https://insys-web-job-get-weather-aks.westus.cloudapp.azure.com/runtime/webhooks/EventGrid 失败了有关更多详细信息,请访问https://aka.ms/esvalidation。“}
我想念什么?
是否需要在Main方法中配置所需的端点。我以为b.AddEventGrid();
正在配置所需的内容。