2016-12-06 59 views
0

我们有一个基于windows服务的应用程序,它使用实体框架连接到数据库。并且我们使用下面的连接字符串进行访问,工作正常。突然间,它抛出异常“关键字用户ID不支持”。我已经尝试过通过添加providerName,删除提供者等各种选项,但仍然没有运气。任何关于此的指导都会非常有帮助。不支持关键字用户标识

连接字符串:

"metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=\"Data Source=datasource;Initial Catalog=dbname;MultipleActiveResultSets=True;User ID=userid;Password=password;\" 

注意:如果我试图从我的本地机器和测试连接,连接似乎不抛出异常。

堆栈跟踪:

12/02 15:12:38.631 SubMessageType解析异常:ArgumentException的:关键字不支持: '用户ID'。 12/02 15:12:39.224在System.Data.EntityClient.DbConnectionOptions.ParseInternal(Hashtable parsetable,String connectionString,Hashtable同义词) at System.Data.EntityClient.DbConnectionOptions..ctor(String connectionString,Hashtable synonyms同义词) at System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串newConnectionString) 在System.Data.Objects.ObjectContext..ctor(字符串的connectionString,字符串defaultContainerName)..代码参考

更新:有一个额外的报价是被添加,这是造成这个问题,注意到当我改变报价到"。谢谢大家的帮助。

+0

你[编辑],可以包括完整的堆栈跟踪? – DavidG

+0

@DavidG它应该是一个链接,如“让我开始编辑你的问题给你”; P –

+0

@MatíasFidemraizer不幸的是,这正是''''''''自动链接给我们带来的! – DavidG

回答

0

我认为这个问题可能是通过连接字符串中途溢出的双引号。

改变那些",它应该工作:

"metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=datasource;Initial Catalog=dbname;MultipleActiveResultSets=True;User ID=userid;Password=password;"" 
+0

不支持关键字:'数据源'是我得到的异常。 –

+0

嗨,谢谢你这样做,但不得不在连接之前解码字符串 –