C# MySQL 6.9.8-打开新连接时System.String.Substring异常
有时,当我进行数据库查询时,我会遇到C# MySQL 6.9.8-打开新连接时System.String.Substring异常,c#,mysql,azure,azure-worker-roles,mysql.data,C#,Mysql,Azure,Azure Worker Roles,Mysql.data,有时,当我进行数据库查询时,我会遇到MySQL.Data库中的ExecuteNonQuery问题 引发的异常是: 抛出异常:CommonLanguageUntimeLibrary中的“System.ArgumentOutOfRangeException”(“长度不能小于零”) 有来自Azure工作者角色的IntelliTrace的我的日志 它大部分时间都在工作,但当这种情况发生时,它会停止工人的正常处理 我正在从app.config加载连接字符串,如下所示: 我在运行时为每个请求选择数据库,
MySQL.Data
库中的ExecuteNonQuery
问题
引发的异常是:
抛出异常:CommonLanguageUntimeLibrary中的“System.ArgumentOutOfRangeException”(“长度不能小于零”)
有来自Azure工作者角色的IntelliTrace的我的日志
它大部分时间都在工作,但当这种情况发生时,它会停止工人的正常处理
我正在从app.config
加载连接字符串,如下所示:
我在运行时为每个请求选择数据库,因为它会不断更改连接到哪个数据库
我能做些什么来阻止这种情况发生并允许新连接正确打开
编辑
经过进一步的调查和在MySQL.Data
源代码中爬行,我深入研究了这个getter
[DisplayName("program_name")]
public string ProgramName
{
get
{
string name = Environment.CommandLine;
try
{
string path = Environment.CommandLine.Substring(0, Environment.CommandLine.IndexOf("\" ")).Trim('"');
name = System.IO.Path.GetFileName(path);
if (Assembly.GetEntryAssembly() != null)
name = Assembly.GetEntryAssembly().ManifestModule.Name;
}
catch (Exception ex)
{
name = string.Empty;
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
return name;
}
}
现在是否有可能WorkerRole会在执行期间的某个时间开始为Environment.CommandLine属性返回不同的值?这似乎是正在发生的事情,因为它在一开始工作,然后在一段时间(2-3天)后失败。请发布包含子字符串方法的代码片段。它在MySQL.Data库内部。这不是我的代码,而是实际的MySQL代码。这幅图显示了我调用
ExecuteNonQuery
到所有内部方法的深度,它在底部崩溃。你能用实际数据重现它吗?它是随机的,每2-3天发生一次。有时更频繁。它只在ExecuteNonQuery
调用上执行此操作,而不是ExectueQuery
,我发现weirdIt可能会尝试将空字符串或空值“子字符串”。您必须有一个复制数据集。请发布包含子字符串方法的代码段。它位于MySQL.Data库内部。这不是我的代码,而是实际的MySQL代码。这幅图显示了我调用ExecuteNonQuery
到所有内部方法的深度,它在底部崩溃。你能用实际数据重现它吗?它是随机的,每2-3天发生一次。有时更频繁。它只在ExecuteNonQuery
调用上执行此操作,而不是ExectueQuery
,我发现weirdIt可能会尝试将空字符串或空值“子字符串”。您必须有一个复制数据集。