我正在REST API
中使用MySQL DB
创建visual studio 2015 in asp.net mvc 4.5
。我已经完成了使用MySQL
运行API所需的每一步,但我得到了这个例外。
{“Message”:“发生错误。”,“ExceptionMessage”:“初始化字符串的格式不符合从索引121开始的规范。”,“ExceptionType”:“ System.ArgumentException“,”StackTrace“:”在System.Data上的System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString,Int32 currentPosition,StringBuilder buffer,Boolean useOdbcRules,String& keyname,String& keyvalue)\ r \ n。 Common.DbConnectionOptions.ParseInternal(Hashtable parsetable,String connectionString,Boolean buildChain,Hashtable synonyms,Boolean firstKey)\ r \ n在System.Data.Common.DbConnectionOptions..ctor(String connectionString,Hashtable synonyms definitions,Boolean useOdbcRules)\ r \ n在MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(字符串值)的MySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr)\ r \ n的System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)\ r \ n )\ r \ n在System.Data.Entity.Infras tructure.Interception.DbConnectionDispatcher.b__18(DbConnection t,DbConnectionPropertyInterceptionContext
1 c)\r\n at System.Data.Entity.Infrastructure.Interception.InternalDispatcher
1.Dispatch [TTarget,TInterceptionContext](TTarget目标,Action2 operation, TInterceptionContext interceptionContext, Action
3执行,Action3 executed)\r\n at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.SetConnectionString(DbConnection connection, DbConnectionPropertyInterceptionContext
1 interceptionContext)\ r \在System.Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection)\ r \ n在System.Data.Entity的System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name,AppConfig config)\ r \ n中.Internal.LazyInternalConnection.Initialize()\ r \ n在System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()\ r \ n,在System.Data.Entity.Internal.LazyInternalContext.InitializeContext()\ r \ n at System .Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)\ r \ n at System.Data.Entity.Internal.Linq.InternalSet1.Initialize()\r\n at System.Data.Entity.Internal.Linq.InternalSet
1.GetEnumerator()\ r \ n at System.Data.Entity .Infrastructure.DbQuery1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()\r\n at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 sou rce)\ r \ n在D:\ Work \ DOT NET API \ RestWithMySQL \ RestWithMySQL \ Controllers \ ProductsController.cs中的RestWithMySQL.Controllers.ProductsController.Get():第19行“}
我认为我的连接字符串存在问题。我搜索过它但找不到确切的解决方案。
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-RestWithMySQL-20170911031521.mdf;Initial Catalog=aspnet-RestWithMySQL-20170911031521;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<add name="ProductEntities" connectionString="metadata=res://*/ProductsModel.csdl|res://*/ProductsModel.ssdl|res://*/ProductsModel.msl;provider=MySql.Data.MySqlClient;provider connection string=" server=localhost;user id=root;database=accurate_dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="MySql.Data.MySqlClient"/>
<!--<remove name="LocalMySqlServer" /><add name="LocalMySqlServer" connectionString="" providerName="MySql.Data.MySqlClient" />-->
</connectionStrings>
任何帮助都将受到高度赞赏。
答案 0 :(得分:8)
将连接字符串剥离到最低限度。添加选项并查看导致其失败的原因。例如,integrated security=true
不适用于MySQL。您需要添加password
代替。
此处表格: ASP.NET MVC 4 EF5 with MySQL
尝试更接近这一点:
<add name="DefaultConnection"
providerName="MySql.Data.MySqlClient"
connectionString="Data Source=localhost;port=3306;Initial Catalog=api_db;User Id=root;password=''"/>
答案 1 :(得分:1)
你的连接字符串最后不应该在其中有另一个引号吗?
<connectionStrings>
<add name="ProductEntities" connectionString="metadata=res://*/ProductsModel.csdl|res://*/ProductsModel.ssdl|res://*/ProductsModel.msl;provider=MySql.Data.MySqlClient;provider connection string=" server=localhost;user id=root;database=accurate_dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
此外: 要使用MySQL提供程序,请考虑in this answer
提供的这些步骤答案 2 :(得分:0)
你错过了一个结束&amp; quot;在连接字符串的末尾。