【问题标题】:WebService doesn't read web.configWebService 不读取 web.config
【发布时间】:2010-04-06 08:34:40
【问题描述】:

我在 web.config 中有 3 个连接字符串,我是这样使用它们的:

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeName"].ConnectionString))

winforms 应用程序调用每个metgod。

其中一个网络方法不能正常工作,因为它只读取一个连接字符串:

data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

这不是我的 web.config 中的 connectionString。

我以同样的方式调用每个方法。

这怎么可能??

已编辑:

我使用外观:这是结构: WinForms 调用 WebMethod SaveItem SaveItem 在 Facade 上调用方法:SaveItemAndDoDatabaseStuff SaveItemAndDoDatabaseStuff 做数据库的东西。

【问题讨论】:

  • 你能提供一些澄清吗? -第二行你提到你在web.config中使用连接字符串 -第三行你提到你正在使用winforms(winforms使用app.config而不是web.config) -facade:这是设计模式还是一些软件?
  • 数据库部分在网络服务上。 WinForms 应用程序是客户端
  • 三个连接字符串是否都指向SQL Server?
  • @phenevo 检查我的答案,很有可能适用于您的方案。
  • @Raja 是的...但是问题消失了

标签: c# web-services web-config


【解决方案1】:

我们看不到您的 Web 结构,但您的应用程序是否可能未在 IIS 中配置为应用程序,因此正在获取 master web.config?看起来一模一样...

进入 IIS 并确保它是一个应用程序(它可能有一个齿轮图标)。

【讨论】:

    【解决方案2】:

    它使用 asp.net 的默认连接字符串(在 .net 安装文件夹的 machine.config 中)。

    搞清楚:

    <configuration>
      <connectionStrings>
        <clear/>
        ... your connection strings here
      </connectionStrings>
    </configuration>
    

    顺便说一句,当您说您在连接字符串中使用“SomeName”时。它肯定不是你使用的任何随机连接字符串,它的默认值:“LocalSqlServer”。

    【讨论】:

      【解决方案3】:

      您应该将连接字符串存储在您正在执行的任何项目中的web.configapp.config 中。

      在你的情况下,你的 app.config 中应该有你的 winforms 应用程序的连接字符串。

      【讨论】:

      • 不,我使用外观:这是结构:WinForms 调用 WebMethod SaveItem SaveItem 调用外观上的方法:SaveItemAndDoDatabaseStuff SaveItemAndDoDatabaseStuff 执行数据库操作。只有这个方法不行。
      • -1 OP 已经提到数据库是从服务器端使用的。
      【解决方案4】:

      如果您的 WinForms 应用程序直接与数据库 X 对话(不是通过 Web 服务),那么数据库 X 的连接字符串应该在 app.config 中(在 WinForms 项目中)。

      如果您的 Web 服务(据我了解,这包括您的外观和数据库层)与数据库 X、Y 和 Z 通信,那么 X、Y 和 Z 的连接字符串需要在 web.config 中(在 Web 服务项目中)。

      【讨论】:

        【解决方案5】:

        为什么不在您要求连接字符串之前添加一个 Trace 行以打印出正在使用的配置文件。只需添加以下行:

                System.Diagnostics.Trace.WriteLine(
                    System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,
                    "APP_CONFIG");
        

        在此之后设置一个断点并查看以“APP_CONFIG:”开头的行的输出窗口。这将提供配置文件的完整路径,并允许您确定加载它的位置。如果您仍然发现运行时值和配置文件之间存在差异,那么很可能是在您的应用程序中运行时更改了这些值。

        【讨论】:

          猜你喜欢
          • 2013-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-26
          • 2011-07-13
          • 1970-01-01
          • 1970-01-01
          • 2014-09-15
          相关资源
          最近更新 更多