27

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

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 函数来设置远程服务器字符串。

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

有任何想法吗?

4

6 回答 6

44

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

当我在 Visual Studio 2012 中打开 web deploy Publish 配置文件时,我注意到Settings它在选项卡下设置了此选项:Use this connection string at runtime (update destination Web.config)

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

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

在此处输入图像描述

于 2013-06-03T21:00:41.173 回答
15

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

于 2013-11-25T16:54:38.460 回答
12

我遇到了同样的问题:

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): 错误:“dbLog-Web.config 连接字符串”参数不能为空或为空。

正如我使用的那样:

<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>

添加<UpdateDestWebConfig>False</UpdateDestWebConfig>到每个节点,所以它会变成:

<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>

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

于 2014-10-02T15:59:34.943 回答
4

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

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

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

在此处输入图像描述

于 2016-07-23T14:48:57.487 回答
0

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

于 2013-12-27T19:53:36.397 回答
0

我遇到了完全相同的问题-在 VS 2017 上出乎意料。

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

于 2018-03-12T15:07:10.547 回答