gpt4 book ai didi

c# - 从 Asp.Net 站点将数据发送到 EventHub

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:00 25 4
gpt4 key购买 nike

我有一个向其发送数据的 Azure EventHub。如果我在控制台应用程序(框架 4.6.1)中使用以下代码,它可以完美运行。

        eventHubClient = EventHubClient.CreateFromConnectionString(myConnString);

Console.WriteLine("Client Created");

var sender = eventHubClient.CreatePartitionSender("1");

var message = $"Message";

Console.WriteLine($"Sending message: {message}");
var eventData = new EventData(Encoding.UTF8.GetBytes(message));

if (!sender.SendAsync(eventData).Wait(TimeSpan.FromMilliseconds(10000)) )
{
int a = 0;
}

但是,如果我将其放入在 IIS-ExpressIIS 中运行的 Asp.Net 应用程序(目标框架 4.6.1)中>,每次都会超时。

我在这里缺少什么?

最佳答案

似乎当您在 Asp.Net 应用程序的非异步上下文中调用 use a async 方法时,它会导致某种死锁。

就我而言,我需要知道它是否已超时,因此我不能让它异步运行,并且在 async 调用完成后我还需要完成一些工作就像失败了一样。

这就是我所做的

Task.Run(() =>
{
if (!sender.SendAsync(eventData).Wait(TimeSpan.FromMilliseconds(10000)) )
{
int a = 0;
}
});

这使我能够处理超时和成功。不幸的是,它不是使整个调用堆栈异步的选项,因此使用await是不可能的。

TL;DR:在 ASP.NET 应用程序中调用 .Wait() 可能会导致死锁。

关于c# - 从 Asp.Net 站点将数据发送到 EventHub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42786010/

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