【问题标题】:ASP.Net Website - publishing doesn't move all filesASP.Net 网站 - 发布不会移动所有文件
【发布时间】:2018-05-22 14:59:55
【问题描述】:

发布我的 ASP.Net 网站(不是 Web 应用程序)时,发布者不包括 web.config 旁边的 Web.ConnectionStrings.config 文件。这是必需的,因为我的网络配置如下所示:

<connectionStrings configSource="Web.ConnectionStrings.config"/>

如何获得 File System Publish 以包含 Visual Studio 似乎忽略的文件。请注意,这是在 Visual Studio 中使用 [File] > [New Website] 创建的网站,而不是 [File] > [New Project] ASP.Net 网站,因此Content=Include 将无法工作。

重现步骤:

  1. 在 Visual Studio 中:文件 > 新建 > 网站..
  2. 创建 Web.ConnectionStrings.config xml 文档(参见下面的 ConnectionStrings.config 代码)。
  3. 在 Web 配置中,将 Web.ConnectionStrings.config 文件链接到 Web.Config 文件(参见下面的 Web.config 代码)
  4. 将网站发布到文件系统上的文件夹中,Web.ConnectionStrings.config 不会与其余文件一起移动。

Web.config:

<configuration>
  <connectionStrings configSource="Web.ConnectionStrings.config"/>
  ..

Web.ConnectionStrings.config:

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
  <add name="connString" connectionString="yourConnectionstringhere"/>
</connectionStrings>

【问题讨论】:

  • 您是否查看了 web.config 内部以确认 VStudio 不只是将您的连接设置拉入 web.config?如果是这样,那仍然可以吗?还是您真的需要在单独的配置文件中使用连接字符串?
  • @tgolisch - 不,它出错了,运行时查找文件但找不到它。 VS 不会以这种方式转换 Web 配置,除非您已对其进行设置:即:web.release.config 和 web.debug.config。实际上,我不确定网站项目是否可以转换,我从未尝试过。我确实需要另一个文件中的连接字符串,它们从一个网络更改为另一个网络,并且它们包含无法签入源代码控制的敏感信息。
  • 如果您手动将Web.ConnectionStrings.config 文件复制到正确的文件夹,应用程序是否按预期工作?我只是好奇。
  • 是的,这就是我现在正在做的保持它的工作,我只是希望它与发布功能一起工作。
  • 将文件的构建操作设置为Content。发布后,它将与所有其他内容文件一起包含。如果您单击 web.config 文件,您还会注意到它的构建操作作为内容。

标签: asp.net visual-studio-2013 web-site-project


【解决方案1】:

你发布网站的方式没问题。

但存储连接字符串的文件名不能以前缀web.开头,而是改为connectionstrings.config

web.config 你输入:

<configuration>
  <connectionStrings configSource="connectionStrings.config"/>

在重命名的文件connectionstrings.config 中放置:

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
  <add name="connString" connectionString="yourConnectionstringhere"/>
</connectionStrings>

【讨论】:

  • 不发布是因为它以web.*开头吗?这是否与 web.release.config 之类的文件有关?
  • 它必须与 web. 作为保留前缀有关。我不知道它是否被记录在案,但这是我通过艰苦的方式学到的东西。
  • 经验法则;不要使用web. 启动您的自定义配置文件。
  • 我猜不是,这很烦人,因为我希望它们都按字母顺序组合在一起,我将不得不开始称它们为我们。而不是网络。
  • 任何其他前缀都可以,例如。比如web_connectionstrings.config。我更喜欢将自定义配置文件放在子文件夹 Config 中,其中包含 ConnectionStrings.config、Log4net.config 等。这样做可以将它们保持在一起并且可识别以部署到开发、QA 和生产。
【解决方案2】:

我认为这篇文章会有所帮助 https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-extra-files

基本上你编辑图片 .pubxml 文件,告诉它在部署期间包含其他文件

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2011-05-19
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多