我在web.config中有3个连接字符串,我用它们是这样的:
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeName"].ConnectionString))
winforms应用程序调用每个metgod。
其中一个web方法无法正常工作,因为它只读取一个connectionString:
data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
这不是我的web.config中的connectionString。
我以同样的方式调用每个方法。
怎么不可能?
编辑:
我使用facade:这是结构: WinForms调用WebMethod SaveItem 在Facade上的SaveItem调用方法:SaveItemAndDoDatabaseStuff SaveItemAndDoDatabaseStuff做数据库的东西。
答案 0 :(得分:4)
我们无法看到您的网络结构,但是您的应用可能未在IIS中配置为应用程序,因此正在选择主 web.config?哪个看起来像完全那样......
进入IIS并确保它是一个应用程序(它可能有一个cog图标)。
答案 1 :(得分:1)
它使用asp.net的默认连接字符串(在.net安装文件夹的machine.config中)。
明确:
<configuration>
<connectionStrings>
<clear/>
... your connection strings here
</connectionStrings>
</configuration>
顺便说一句,当你说你在连接字符串中使用“SomeName”时。它不是你使用的任何随机连接字符串,它是默认值:“LocalSqlServer”。
答案 2 :(得分:0)
您应该在web.config
或app.config
中将连接字符串存储在您正在执行的任何项目中。
在您的情况下,您应该在app.config中为winforms应用程序提供连接字符串。
答案 3 :(得分:0)
如果您的WinForms应用程序直接与数据库X(不是通过Web服务)对话,那么数据库X的连接字符串应该在app.config中(在WinForms项目中)。
如果您的Web服务(据我所知,这包括您的外观和数据库层),与数据库X,Y和Z对话,那么X,Y和Z的连接字符串需要在web.config中(在Web服务项目中)。
答案 4 :(得分:0)
为什么不在请求连接字符串之前添加一条Trace行来打印出正在使用的配置文件。只需添加以下行:
System.Diagnostics.Trace.WriteLine(
System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,
"APP_CONFIG");
在此之后设置断点,并查看以“APP_CONFIG:”开头的行的“输出”窗口。这将提供配置文件的完整路径,并允许您确定其加载位置。如果您仍然发现运行时值与配置文件之间存在差异,那么可能会在应用程序中的运行时更改这些值。