使用方法’mysql_native_password’的用户’yyy’的主机’xxx’失败并显示消息:用户’yyy’已超出’max_user_connections’ 资源 </跨度> (现值:4)
我尝试添加Max 池 </跨度> 大小= 4到 连接字符串,但没有帮助。
&lt; add name =“DbContext”connectionString =“Database = db; Data Source = xxx; User Id = yyy; Password = zzz; CharSet = utf8; Persist 安全 </跨度> Info = True;转换零日期时间=真;最大 池 </跨度> Size = 4“providerName =”MySql.Data.MySqlClient“/&gt;
按照Vito的建议:抓住异常并让前端决定做什么:
在后端,我用过 PostSharp ,执行 面向方面的编程 对于.NET。它允许我用属性装饰我的所有存储库来处理这个特定的异常。
在前端,我可能会做一些事情,比如等待400ms并再次尝试1-3次然后放弃。
在程序包管理器控制台中: Install-Package PostSharp
Install-Package PostSharp
你还需要安装一个 Visual Studio的PostSharp插件
[Serializable] public class MaxMysqlConnectionExceptionHandlerAspect : OnExceptionAspect { public override void OnException(MethodExecutionArgs args) { if (args.Exception.InnerException != null && args.Exception.InnerException.Message.Contains("Too many connections")) { args.FlowBehavior = FlowBehavior.ThrowException; args.Exception = new Exception("MAX_CONNECTIONS"); } } public override Type GetExceptionType(MethodBase method) { return typeof(EntityException); } }
然后装饰类或方法:
[MaxMysqlConnectionExceptionHandlerAspect] public class FancyPantsService {}