我在web.config中有3个连接字符串,我是这样使用它们的:
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeName"].ConnectionString))
每个metgod都由winforms应用程序调用。
其中一个webmethod无法正常工作,因为它只读取一个connectionString:
data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
它不是我的web.config中的connectionString。
我以同样的方式调用每个方法。
怎么不可能??
编辑日期:
我用门面:这就是结构:WinForms调用WebMethod SaveItem SaveItem调用外观上的方法:保存项目和执行数据库的东西保存项目和执行数据库的东西。
6条答案
按热度按时间mo49yndu1#
我们无法看到您的Web结构,但是否有可能您的应用程序没有配置为IIS中的应用程序,因此正在获取 master web.config?它看起来 * 完全 * 像这样...
进入IIS并确保它是一个应用程序(它可能有一个齿轮图标)。
wgmfuz8q2#
如果您的WinForms应用程序直接与数据库X对话(* 而不是 * 通过Web服务),那么数据库X的连接字符串应该在app.config中(在WinForms项目中)。
如果您的Web服务(据我所知,这包括外观和数据库层)与数据库X、Y和Z进行通信,则X、Y和Z的连接字符串需要在web.config中(在Web服务项目中)。
yk9xbfzb3#
它使用的是www.example.com拥有的默认连接字符串asp.net(在machine.config的.net安装文件夹中)。
做一个明确的说明:
顺便说一句,当你说你在连接字符串中使用“SomeName”时,它肯定不是你使用的任何随机连接字符串,它是默认的:“本机SqlServer”。
c90pui9n4#
您应该将连接字符串存储在正在执行的任何项目的
web.config
或app.config
中。在您的示例中,您应该在winforms应用程序的app.config中包含连接字符串。
mpbci0fu5#
为什么不在请求连接字符串之前添加一个Trace行以打印出正在使用的配置文件。只需添加以下行:
在此之后设置一个断点,并查看输出窗口中以“APP_CONFIG:“开头的行。这将给予配置文件的完整路径,并允许您确定它被加载的位置。如果您仍然看到运行时值和配置文件之间的差异,则可能是在您的应用程序运行时更改了这些值。
zqry0prt6#
这是一个迟来的答案,但也许是值得的。
我有一个Web服务项目,我想在两种模式下运行它。
一个是“localasapp”(用于测试),至少在我当前的系统设置中,它读取的文件是Web.config(它显然是在deug模式下读取的,而不是Web.Debug.config,至少对于数据库配置是这样)
因此,您可以将attribute部分替换为并复制在“为Web服务调用项目”中使用的部分。
因此更换
与
以上内容可以在“调用项目”中的app.config中找到....对我来说,这无论如何都更优雅。
现在它可以在两种模式下工作。
在C#中可以使用条件编译,但现在只需读入:
C#程式码:
以上代码在任何一种模式下都可以工作,不需要条件编译指令。