【发布时间】:2010-10-29 00:50:30
【问题描述】:
我有一个 DAL 类库,它作为 DLL 包含在我的程序中。下面的行是从 DAL 初始化连接。
DataSet ds = new DataSet("table");
SqlConnection cnn = new SqlConnection(Settings.CMOSQLConn);
当我运行它时,我得到以下错误:
An unhandled exception of type 'System.StackOverflowException' occurred in CMO.DAL.dll
以下位于 Settings.Designer.cs 文件中,它在 get 调用中显示错误:
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=WWCSTAGE;Initial Catalog=CMO;Persist Security Info=True;User ID=CMOWe" +
"bService;Password=ecivreSbeWOMC")]
public static string CMOSQLConn {
get {
return (CMOSQLConn);
}
}
有人知道要寻找什么吗?是因为连接字符串存储在dll而不是我的主应用程序中吗?我真的坚持这一点,将不胜感激任何帮助!
编辑 1
我在下面尝试了 Greg 的 建议:
public static string CMOSQLConn {
get {
return (Settings.CMOSQLConn);
}
}
我仍然遇到同样的错误...还有什么想法吗?到目前为止谢谢!
编辑 2
所以我按照下面的建议重新生成设置文件,现在我的设置文件看起来像这样-->
public string CMOSQLConn {
get {
return ((string)(this["CMOSQLConn"]));
}
}
不幸的是,这不会像我有这个语句的地方那样编译 -->
SqlConnection cnn = new SqlConnection(Settings.CMOSQLConn);
我现在得到这个错误 -->
Error 1 An object reference is required for the non-static field, method, or property 'CMO.DAL.Properties.Settings.CMOSQLConn.get' B:\MyDocs\tmpPATRIOT\Projects\VS2008\DisConnectDAL\CMO.DAL\SupportWorker.cs 13 51 CMO.DAL
这是我应该期待的吗?
谢谢!
【问题讨论】:
-
(别难过,我敢打赌,除了 Jon Skeet 本人以外的所有人都至少犯过一两次这个错误。:))
-
CMOSQLConn 是如何成为静态属性的?当我在设置文件中生成连接字符串时,它仍然成为实例属性。
-
我不知道,这让我快疯了!!!我手动删除了静态,库的其余部分现在正在寻找一个实例......这不是我的原始代码。这是我转换为 C# 类库的 VB 中的 Web 服务。在我的 WinForm 应用程序中使用...感谢您的宝贵时间!
-
(我对转换器怀恨在心。我的经理使用了一个,认为它很容易,将这些东西插入我们的主分支。接下来的几个月,我断断续续地修复了各种问题奇怪的问题。)
-
为什么不是 Greg D?手动重新生成它应该可以工作 - 属性 > Settings.settings > 右键菜单 > 运行自定义工具 > 验证静态属性是否消失
标签: c# winforms settings data-access-layer