首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Asp.Net站点向EventHub发送数据

从Asp.Net站点向EventHub发送数据
EN

Stack Overflow用户
提问于 2017-03-14 20:27:22
回答 1查看 317关注 0票数 2

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

代码语言:javascript
复制
        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)中,它每次都会超时。

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-15 13:09:29

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

在我的例子中,我需要知道它是否已经超时,这样我就不能让它异步运行,并且在async调用完成之后以及它是否失败后,我需要完成一些工作。

我就是这么做的

代码语言:javascript
复制
Task.Run(() =>
{
    if (!sender.SendAsync(eventData).Wait(TimeSpan.FromMilliseconds(10000)) )
        {
           int a = 0;
        }
});

这让我既可以处理超时,也可以处理成功。不幸的是,不能选择让整个调用堆栈成为async,所以使用await是不可能的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42786010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档