WebService不读取web.config

时间:2010-04-06 08:34:41

标签: c# web-services web-config

我在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做数据库的东西。

5 个答案:

答案 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.configapp.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:”开头的行的“输出”窗口。这将提供配置文件的完整路径,并允许您确定其加载位置。如果您仍然发现运行时值与配置文件之间存在差异,那么可能会在应用程序中的运行时更改这些值。