【问题标题】:keyword user id not supported不支持关键字用户 ID
【发布时间】:2017-04-21 15:21:17
【问题描述】:

我们有一个基于 Windows 服务的应用程序,它使用实体框架连接到数据库。我们使用下面的连接字符串进行访问,效果很好。突然它抛出异常“不支持关键字用户ID”。我通过添加提供者名称、删除提供者等尝试了各种选项,但仍然没有运气。任何有关这方面的指导都会非常有帮助。

连接字符串:

"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(哈希表可解析表,字符串连接字符串,哈希表同义词) 在 System.Data.EntityClient.DbConnectionOptions..ctor(字符串连接字符串,哈希表同义词) 在 System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串 newConnectionString) 在 System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName).. 代码参考

更新:添加了导致问题的额外引号,注意到当我将引号更改为“时。谢谢大家的帮助。

【问题讨论】:

  • 你能edit 并包含完整的堆栈跟踪吗?
  • @DavidG 应该是“让我开始为您编辑问题”之类的链接;P
  • @MatíasFidemraizer 不幸的是,这正是 [edit] 自动链接给我们的!
  • @DavidG 不,我的意思是它会像 LMGTFY 这样的东西会很棒
  • 请勿在标题中添加“已解决” 您通过接受下面的答案来标记答案已解决。

标签: c# entity-framework windows-services


【解决方案1】:

我认为问题可能是连接字符串中途的转义双引号。

将它们更改为",它应该可以工作:

"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;""

【讨论】:

  • 不支持关键字:“数据源”是我得到的例外。
  • 嗨,谢谢你这也有效,但在建立连接之前必须解码字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 2019-07-08
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
相关资源
最近更新 更多