将网站部署到运行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选项卡中显式设置了目标和源数据库的连接字符串,但是我不知道是什么问题。
有什么想法吗?
答案 0 :(得分:44)
现在正在发生这种情况,我设法隔离了问题...在我的SQL Server
中手动添加新的Web.config
连接字符串后,我在尝试部署时遇到了这个错误远程服务器。
当我在Visual Studio 2012中打开Web部署发布配置文件时,我在Settings
选项卡下注意到它已设置此选项: 在运行时使用此连接字符串(更新目标Web.config ) 强>
奇怪的是,这是由VS 2012自动设置的......
要解决此问题,只需取消选中该复选框,然后再进行Web部署即可开始工作。
答案 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>
删除下面突出显示的行后,我能够成功发布。
答案 4 :(得分:0)
当我将Web应用程序部署到Azure Web服务器时,我遇到了同样的问题。我通过创建一个新服务器来解决它。在那一点上,我意识到之前该服务器上还有另一个应用程序。该应用程序使用了第二个应用程序未过度使用的上下文名称,以便继续查找第二个应用程序过度使用的连接字符串。我认为清理服务器可能会解决问题。
答案 5 :(得分:0)
我有完全相同的问题 - 在VS 2017上突然出现。
原来是因为我以管理员身份运行VS.我关闭了应用程序,正常重启,一切恢复正常。