VS2010 web部署连接字符串参数不能为null或为空

时间:2012-07-20 13:47:24

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

将网站部署到运行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选项卡中显式设置了目标和源数据库的连接字符串,但是我不知道是什么问题。

有什么想法吗?

6 个答案:

答案 0 :(得分:44)

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

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

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

要解决此问题,只需取消选中该复选框,然后再进行Web部署即可开始工作。

enter image description here

答案 1 :(得分:14)

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

答案 2 :(得分:12)

我遇到了同样的问题:

  

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

我正在使用:

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

只需删除此条目,一切都在重新运作......

答案 3 :(得分:3)

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

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

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

enter image description here

答案 4 :(得分:0)

当我将Web应用程序部署到Azure Web服务器时,我遇到了同样的问题。我通过创建一个新服务器来解决它。在那一点上,我意识到之前该服务器上还有另一个应用程序。该应用程序使用了第二个应用程序未过度使用的上下文名称,以便继续查找第二个应用程序过度使用的连接字符串。我认为清理服务器可能会解决问题。

答案 5 :(得分:0)

我有完全相同的问题 - 在VS 2017上突然出现。

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