C# mysql.net连接器抛出;“路径中的非法字符”;
我正在使用mysql和EF(数据库优先)构建一个asp.net应用程序 MySQL 5.7.19 连接器/网络6.9.9 在我第一次调用DB时,mysql连接器抛出了一个“路径中的非法字符”异常 这台机器上的其他应用程序工作正常。另一台开发人员机器上的相同应用程序工作正常 这似乎不是连接字符串问题。它抛出错误的路径是c:\windows\system32\inetsrv\w3wp.exe-ap \“DefaultAppPool”-这当然不是一个有效的路径,它是asp.net应用程序正在运行的应用程序池的命令行 这是调用堆栈:C# mysql.net连接器抛出;“路径中的非法字符”;,c#,mysql,entity-framework,C#,Mysql,Entity Framework,我正在使用mysql和EF(数据库优先)构建一个asp.net应用程序 MySQL 5.7.19 连接器/网络6.9.9 在我第一次调用DB时,mysql连接器抛出了一个“路径中的非法字符”异常 这台机器上的其他应用程序工作正常。另一台开发人员机器上的相同应用程序工作正常 这似乎不是连接字符串问题。它抛出错误的路径是c:\windows\system32\inetsrv\w3wp.exe-ap \“DefaultAppPool”-这当然不是一个有效的路径,它是asp.net应用程序正在运行的应用
mscorlib.dll!System.IO.Path.CheckInvalidPathChars(string path, bool checkAdditional) Unknown
mscorlib.dll!System.IO.Path.GetFileName(字符串路径)未知
MySql.Data.dll!MySql.Data.MySqlClient.MySqlConnectAttrs.ProgramName.get()未知
[本机到托管转换][管理到本机转换]
MySql.Data.dll!MySql.Data.MySqlClient.NativeDriver.SetConnectAttrs()未知 MySql.Data.dll!MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(bool reset)未知 MySql.Data.dll!MySql.Data.MySqlClient.NativeDriver.Open()未知 MySql.Data.dll!MySql.Data.MySqlClient.Driver.Open()未知 MySql.Data.dll!MySql.Data.MySqlClient.Driver.Create(MySql.Data.MySqlClient.MySqlConnectionStringBuilder设置)未知 MySql.Data.dll!MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()未知 MySql.Data.dll!MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()未知 MySql.Data.dll!MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()未知 MySql.Data.dll!MySql.Data.MySqlClient.MySqlPool.GetConnection()未知 MySql.Data.dll!MySql.Data.MySqlClient.MySqlConnection.Open()未知 EntityFramework.dll!System.Data.Entity.Infrastructure.InternalDispatcher.Dispatch(System.Data.Common.DbConnection目标,System.Action操作,System.Data.Entity.Infrastructure.Interception.DbConnectionInterceptionContext interceptionContext interceptionContext,System.Action执行,System.Action执行)未知 EntityFramework.dll!System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(System.Data.Common.DbConnection连接,System.Data.Entity.Infrastructure.Interception.DbInterceptionContext interceptionContext)未知 EntityFramework.dll!System.Data.Entity.Core.EntityClient.EntityConnection.Open()未知 EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectContext.EnsureReconnection(bool shouldMonitorTransactions)未知 EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(System.Func Func,System.Data.Entity.Infrastructure.IDbExecutionStrategy executionStrategy executionStrategy,bool startLocalTransaction,bool ReleaseConnectionUnsuccess)未知 EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery.GetResults.AnonymousMethod__5()未知 EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery.GetResults(System.Data.Entity.Core.Objects.MergeOption?forMergeOption)未知 EntityFramework.dll!System.Data.Entity.Core.Objects.ObjectQuery.System.Collections.Generic.IEnumerable.GetEnumerator.AnonymousMethod__0()未知 EntityFramework.dll!System.Data.Entity.Internal.LazyEnumerator.MoveNext()未知
Quatation是路径中的非法字符:
c:\windows\system32\inetsrv\w3wp.exe -ap \"DefaultAppPool
^
您只需在尝试创建文件或目录时使用
“
在其名称中是的,但我没有创建此字符串,它位于mysql连接器/驱动程序堆栈的深处。问题是为什么mysql连接器试图调用上述字符串上的Path.GetFilename?我该如何解决这个问题?@DavidWGray-你有什么进展吗?我看到了同样的行为?@Graeme Wilson-是和否。我在mysql bug数据库中发现了一个非常古老且未修复的问题。但事实证明,此异常被正确捕获,因此与VS调试器存在一些奇怪的交互,您无法在第一次出现异常时运行。我一直在关闭调试器中的异常,直到我通过解除阻止我的初始连接为止。@DavidWGray我们只在PerfView中看到异常,但在我们的生产环境中一分钟会看到几次。看起来它在MySQL.Data 6.10.6中已经修复,所以我们将尝试升级客户端。它依赖于.NET4.5.2,因此我们需要从当前的.NET4.0DAL升级一些工作。