程序集的连接字符串

本文关键字:字符串 连接 程序集 | 更新日期: 2023-09-27 18:37:23

我有一个网站,其web.config中列出了连接字符串。连接字符串由发布功能更改,以便它可以引用开发数据库,直到它被释放,当它引用单独的发布数据库时。

不过,该网站通过某些程序集访问数据库。它们是类库,所以它们不能被发布,至少据我所知。我读到web.config会覆盖app.config连接字符串,但这似乎没有发生。

每当我发布发布

时,发布站点都会引用开发数据库,除非我更改程序集 app.config 文件以引用发布数据库。

我不想每次都记得这样做。我该如何处理?

程序集的连接字符串

您这里有两个问题:

1. 如何记住每次发布时发布正确的设置:

部署此类设置的一种方法是在 Visual Studio 中使用 web.config 转换。这很容易设置,这意味着您不必记住每次发布时都更新设置。

除了调试和发布环境,您还可以为"UAT"、"暂存"、"测试"或您可能需要的任何其他配置创建转换。

您可能会发现这些文章很有用:这里,这里和这里。

例如,下面是发布环境的转换:

    <?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <connectionStrings>
      <add name="MyDB" 
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
      <customErrors defaultRedirect="GenericError.htm"
        mode="RemoteOnly" xdt:Transform="Replace">
        <error statusCode="500" redirect="InternalError.htm"/>
      </customErrors>
  </system.web>
</configuration>

在上面,您将看到发布模式的转换设置了 MyDB 连接字符串 (xdt:Transform="SetAttributes") 的属性,从编译部分中删除了调试属性,并将自定义错误部分替换为新版本。

这是一种简单但非常强大的技术。

2. 如何让你的程序集在 web.config 中选取设置

如果库是以常规方式编写的,则它们应该通过简单地访问 [Web]ConfigurationManager.ConnectionString 属性来检索其连接字符串。就像 Horn 所说的@Bob,他们应该从主机进程的配置文件(在本例中为 Web 应用程序的 web.config)中获取设置。

但是,有时您可能会发现库正在从 .项目中的设置文件,在这种情况下,事情会变得更加复杂。您需要将 app.config 的设置部分复制到 web.config 中。(您也可以使用上述转换技术执行此操作。

如果有权访问其他程序集的源代码,请查找检索连接字符串的代码部分。如果它没有访问 ConfigurationManager 类,那么这可能解释了为什么它没有选取 web.config 文件。