小编Phi*_*l S的帖子

C#,Dapper,SQL Server和连接池

我已经编写了一些代码来使用Dapper将一些数据写入SQL Server.在继续其他工作之前,我不需要等待这个写完成,所以想要使用Task.Run()来使这个异步.

我有(使用)语句在我的系统的其余部分调用它:

 using (IDataAccess ida = new DAL())
        {
            ida.WriteMessageToDB(id, routingKey, msgBody);
        }
Run Code Online (Sandbox Code Playgroud)

运行using语句时,我的DAL将自动检查dbConnection.State,如果它已关闭,则尝试进行简单修复.这适用于任何非异步/ TPL选择调用.

但是,当我同时抛出一堆写入时,Task.Run()代码随着其中一些连接关闭而倒下 - 基本上我认为代码的并行性意味着状态被关闭了其他任务.

我通过检查在Task.Run()代码中打开Connection.State来"修复"这个问题,这似乎解决了这个问题.像这样:

Task.Run(() =>
            {
                if (dbConnection.State == ConnectionState.Closed)
                {
                    dbConnection.Open();
                }

                if (dbConnection.State == ConnectionState.Open)
                {
                    *Dapper SQL String and Execute Commands*
                }
            });
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM sys.dm_exec_connections在此之后我从SSMS 运行时,我看到了更多的连接.可以预料?

据我所知:

  • Dapper不处理连接池
  • SQL Server应该自动处理连接池吗?

这个解决方案有什么问题吗?或者更好的方法呢?我想使用连接池,原因很明显,并且尽可能无痛.

提前致谢.

c# sql-server connection-pooling dapper

8
推荐指数
1
解决办法
2190
查看次数

配置 NET 6 Azure Function 应用程序运行状况检查

我正在努力寻找有关如何在 Azure 中为 .NET 6 Core 功能应用程序设置运行状况检查的任何最新文档。

该应用程序在应用程序服务计划(而不是消耗)内以 DOTNET-ISOLATED 运行。

文档解释了如何在 Azure 中设置运行状况检查部分(足够简单)。

但它没有从代码角度解释任何地方需要在函数应用程序端运行什么。有各种各样的健康检查东西可用,但它们似乎都是针对 WebApi 的,或者没有 .NET 6 的示例。

对于 WebApi 来说这很容易做到(只需几句俏皮话),但对于他们自己的函数应用程序却不是这样,这似乎很愚蠢?

这看起来很简单,但似乎只适用于消费计划?

我已经查看了一些关于 .NET 5 的文章和答案,包括这篇文章和答案,但它缺乏细节,并且似乎不是对 .NET 6 的明显翻译?

有人有一些工作代码的示例吗?健康检查需要多深入?我可以只编写一个返回 200 并将 Azure 指向它的简单函数吗?

c# azure azure-functions health-check dotnet-isolated

4
推荐指数
1
解决办法
2786
查看次数