【问题标题】:VS2010 web deploy the connection string argument cannot be null or emptyVS2010 web部署连接字符串参数不能为null或为空
【发布时间】:2012-07-19 19:24:36
【问题描述】:

在将网站部署到运行 IIS7 的 Windows 2008 r2 服务器时遇到问题。我之前已将另一个站点部署到此服务器。网络部署正在连接我的文件并将其复制到服务器,但我看到以下错误。

1 The 'Connection String' argument cannot be null or empty
2   Web deployment task failed.((20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer.)

(20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer. Could not find a part of the path 'C:\Users\Me\Documents\Visual Studio 2010\Projects\MySite\MySiteClient\obj\Release\AutoScripts\EFDbContext-Deployment_SchemaOnly.sql'.     0   0   MySiteClient

我已验证该路径存在于我的本地计算机上。

我已尝试在不使用 web.config 转换的情况下发布,并使用 xdt:transform 函数设置远程服务器字符串。

我还在“打包/发布 SQL”选项卡中明确设置了目标数据库和源数据库的连接字符串,但不知道问题出在哪里。

有什么想法吗?

【问题讨论】:

  • 完全用户错误。从我的 Web Config 导入后,我有两个 DB 条目 ApplicationServices 和 MyAppContext。我正在为第一个条目应用程序设置连接字符串,但没有为 MyAppContext 条目设置连接字符串。认为我忽略了这一点,因为我没有意识到连接字符串输入框随着数据库列表框中的选定条目而改变。呵呵.....

标签: visual-studio-2010 visual-studio iis-7 connection-string webdeploy


【解决方案1】:

这发生在我身上,我设法隔离了问题......在我的Web.config 中手动添加新的SQL Server 连接字符串后,我在尝试部署到远程服务器时开始遇到这个错误。

当我在 Visual Studio 2012 中打开 Web 部署发布配置文件时,我注意到它在 Settings 选项卡下设置了此选项:在运行时使用此连接字符串(更新目标 Web.config)

奇怪的是,这是 VS 2012 自动设置的...

要解决问题,只需取消选中该复选框,网络部署应该会重新开始工作。

【讨论】:

  • 另外,如果上述步骤不起作用:删除发布配置文件,然后按照上述步骤操作,应该可以解决问题。祝大家编码愉快!
  • 谢谢,这篇文章帮助了我很多,节省了我的时间。
【解决方案2】:

除了 Leniel 的回答之外,如果您没有使用 SqlClient 或 Entity Framework Code First 并因此看不到复选框,请暂时将 web.config 的连接字符串中的 providerName 设置为 System.Data.SqlClient 和然后返回您的发布设置以取消选中复选框。

【讨论】:

  • 谢谢您,我使用的是 Windows Azure 存储连接字符串,我必须按照您说的(更改为 System.Data.SqlClient 然后重新保存发布设置)来清除此错误。跨度>
  • 我在 Azure 上使用 MySql,并且我有 providerName="MySQL Data Provider",但部署后仍然出现错误。 (并且部署页面上没有出现复选框)。你能帮忙吗?
  • 你有没有试过在打开部署页面之前先把providerName改成“System.Data.SqlClient”?
  • 谢谢!顺便说一句,最终结果是您的 pubxml 将从... ...变为... False
  • 工作得很好!谢谢。我正在发布到非 Azure 的 VPS 服务器。
【解决方案3】:

我遇到了同样的问题:

2>C:...\Microsoft.Web.Publishing.targets(4270,5):错误:“db-Web.config 连接字符串”参数不能为空或为空。 2>C:...\Microsoft.Web.Publishing.targets(4270,5):错误:“dbAudit-Web.config 连接字符串”参数不能为空或为空。 2>C:...\Microsoft.Web.Publishing.targets(4270,5): Error : The 'dbLog-Web.config Connection String' 参数不能为空或空。

正如我使用的那样:

<connectionStrings>
  <add name="db" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=gavekortet;port=3306;password=123456" />
  <add name="dbLog" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=logs;port=3306;password=123456" />
  <add name="dbAudit" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=audit;port=3306;password=123456;pooling=false" />
</connectionStrings>

当我在这里阅读时,问题是关于发布配置文件,然后我打开了.pubxml 文件,我发现:

<ItemGroup>
  <MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String" />
  <MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String" />
  <MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String" />
</ItemGroup>

在每个节点上添加&lt;UpdateDestWebConfig&gt;False&lt;/UpdateDestWebConfig&gt;,这样就变成了:

<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String">
  <UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String">
  <UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String">
  <UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
</ItemGroup>

只需删除此条目,一切都恢复正常...

【讨论】:

    【解决方案4】:

    提供的解决方案都没有帮助我。

    我终于发现,在我本地的Web.config 中,有一个名为LocalMySqlServer 的空默认连接字符串(可能是由Mysql.Data NuGet 包放在那里的)。

    删除下面突出显示的行后,我能够成功发布。

    【讨论】:

    • 似乎在重新安装所有软件包后它安装了一个空的连接条目。这是解决方案,谢谢。 ;) 我一直在查看发布配置文件,但当然 MS 错误很少有帮助。 ;)
    • 伙计...这终于在这里解决了。我不断更改Web Deploy.pubxml 并删除与database 相关的所有内容,但Web.config 中有一个空连接字符串。我刚刚从Web.config 中删除了这个连接字符串,现在它成功完成了发布过程。
    【解决方案5】:

    当我将 Web 应用程序部署到 Azure Web 服务器时,我遇到了同样的问题。我通过创建一个新服务器解决了这个问题。在那一点上,我意识到之前在该服务器上还有另一个应用程序。该应用程序使用了未被第二个应用程序覆盖的上下文名称,因此人们一直在寻找被第二个应用程序覆盖的连接字符串。我认为清除您的服务器可能会解决问题。

    【讨论】:

      【解决方案6】:

      我在 VS 2017 上遇到了完全相同的问题。

      原来是因为我以管理员身份运行 VS。我关闭了应用程序,然后正常重启,一切恢复正常。

      【讨论】:

        猜你喜欢
        • 2018-09-24
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 2019-11-06
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        相关资源
        最近更新 更多