【问题标题】:what are all the locations in which connectionStrings can be defined for an iis site?可以为 iis 站点定义 connectionStrings 的所有位置是什么?
【发布时间】:2021-07-14 21:07:09
【问题描述】:

我正在尝试查找可以为 iis 站点定义 connectionString 的所有位置(以编写脚本将它们全部提取出来)。 我知道它可以是 web.config 的一部分。我想要一个可以配置的文件的完整列表。 在站点代码中配置它是否有意义? 还有哪些配置文件可以定义站点的connectionStrings?

还有一个额外的问题 - 我如何知道在其中搜索 connectionString 的文件的顺序?

谢谢,

编辑:
附加信息 - 所有 IIS 站点都是纯 dotnet 站点。

此外,指定文件的一般位置而不是文件名也很有帮助。
例如。 - connectionStings 可以位于外部配置文件中,其位置在“%runtime install path%\config\machine.config”文件的appSettings 元素中定义。

另一种选择是仅链接到相关文档。
我的问题是我没有找到任何结论。

【问题讨论】:

  • 所以你是在盲目猜测。不同的网络堆栈使用不同的文件/方法来存储连接字符串,web.config 不是唯一的(甚至可能不是最常见的)地方。如果您不编辑问题以提供有关上下文的更多详细信息,则无法进一步讨论。
  • 我认为 IIS 是一个 Web 堆栈。我可以给你哪些额外的信息?纯 dotnet iis 网站如何进一步分化?
  • 目前没有“dotnet”,只有 .NET Framework 或 .NET Core。因此,您必须更加具体才能使讨论有意义。下面的答案显示了一些关于 .NET Framework Web 应用程序的提示。
  • 我的意思是 dotnet 框架。

标签: iis iis-7 web-config connection-string


【解决方案1】:

据我所知,有几种方法可以在 ASP.NET 应用程序中配置连接字符串。

  1. 在代码中定义它。这是许多初学者使用的方法。因为此时他们专注于代码学习和逻辑理解。但是有些人习惯使用它,如果数据库是固定的,就不需要修改了。

    SqlConnection connection = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=mytest;Integrated Security=True");
    
  2. 在 web.config 或 App.config 中定义它。它的好处是在发布应用程序后很容易修改连接字符串。开发者可以修改web.config,无需再修改代码和部署应用。

     <connectionStrings>
       <add name="mytest" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=mytest;Integrated Security=True;" providerName="System.Data.SqlClient" />  
     </connectionStrings>  
    
  3. 使用External Configuration Files。 ConnectionString 存储在一个独立的文件中,例如connections.config。这样做的好处是修改外部配置文件不会导致应用重启。

    <?xml version='1.0' encoding='utf-8'?>  
    <configuration>  
      <connectionStrings configSource="connections.config"/>  
    </configuration>
    

关于列出所有连接字符串,可以使用ConnectionStringSettingsCollection。它可以通过名称和提供者名称获取连接。

【讨论】:

  • 感谢您的详细回答。不幸的是,我的脚本是通过挂载离线虚拟机的磁盘来运行的,所以我只能读取文件系统,而无法访问运行时信息。此外,您提供的链接并未描述可以在其中定义 connectionString 的文件\位置的完整列表。例如,未提及 applicationhost.config,但可以在其中定义全局 connecitonStrings。
  • @NimrodFiat 安装磁盘大大提高了您的分析标准,因为您超出了现有 IIS/ASP.NET 管理 API/脚本的范围,并且必须推出自己的分析逻辑。这对于经验丰富的 IIS 专业人员来说是可行的,但与仅输入几段文字作为答案相比,这需要更多的时间。
  • 好的,那么我会接受这个答案,因为缺少更好的选择。我不认为有很多分析逻辑要做(假设我愿意忽略配置的完全加密部分)。如果我找到完整的 iis 配置文件列表,也许我会上传答案。再次感谢。
【解决方案2】:

我找到了一个很好的 IIS dotnet 框架配置文件位置的来源 - https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc754617(v=ws.10)?redirectedfrom=MSDN#inheritance

你可以定义额外的连接字符串

  1. 在 dotnet 代码中。
  2. 在环境中
  3. 在外部配置文件中。
  4. 对于非 IIS 范围 - 例如用户范围和角色范围。

这 4 个选项并非特定于 IIS。
我不知道选项(3)和(4)在哪里定义,我不确定这个列表是否完整。但是通过结合这个列表和文档中的列表,我认为我们已经定义了 99% 的连接字符串。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2013-10-12
    • 1970-01-01
    • 2012-08-04
    • 2018-06-22
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多