'DefaultConnection-Web.config Connection String' 参数不能为 null 或为空
The 'DefaultConnection-Web.config Connection String' argument cannot be null or empty
当我使用 Visual Studio 通过“发布为 Azure WebJob”部署我的项目时,我在标题中收到错误。
已通过从 .pubxml 文件中删除以下标记来修复。删除标记后必须 exit/restart VS(否则 VS 会将其重新添加)。
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" />
</ItemGroup>
在项目根目录中创建一个 Parameters.xml 文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter name="DefaultConnection-Web.config Connection String"
description="DefaultConnection"
defaultValue="Server=tcp:x.database.windows.net,1433;Database=x_db;User ID=x@y;Password=z;Trusted_Connection=False;etc." tags="" />
</parameters>
所有其他缺少的配置元素也可以在此处添加。
我有 Visual Studio 2015 更新 3,我遇到了同样的问题。我发现对我有用的解决方案如下:
1) 在属性 -> 发布配置文件下打开 *.pubxml 文件。
2) 在 PublishDatabaseSettings 部分下查找 Path 属性:
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="eRecall.ETL.Models.erecallContext" Order="1" Enabled="False">
<Destination Path="" />
<Object Type="DbCodeFirst">
<Source Path="DBContext" DbContext="eRecall.ETL.Models.erecallContext, eRecall.ETL" />
</Object>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
3) 将 Path 属性值设置为以下内容:
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="eRecall.ETL.Models.erecallContext" Order="1" Enabled="False">
<Destination Path="{deployment connection string}" />
<Object Type="DbCodeFirst">
<Source Path="DBContext" DbContext="eRecall.ETL.Models.erecallContext, eRecall.ETL" />
</Object>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
4) 删除 Azure 作业收集计划程序中的现有 Web 作业部署。
5) 重新部署网络作业,从调度程序重新运行 网络作业,它开始正常工作!
希望对您有所帮助。
问题的原因是以下之一:
- 更改
web.config
中的连接字符串的名称。
- 在
web.config
中添加新的连接字符串
解决方案
- Select网站项目,right-click就可以了,点击发布。
按设置 link 并从 pop-up window select 'Settings' 选项卡
取消选中所有连接字符串中的 use this connection string at runtime
。
- 点击
Save
按钮关闭window。 (无需重启Visual Studio)
- 再次尝试发布网站,应该没有问题。
- 您可以像以前一样重新配置设置,取消选中只会触发 VS 重新生成 .pubxml 文件,因此您根本不会被迫更改设置。
注意
我正在使用 VS 2017(根据评论,这也适用于 Visual Studio 2013)
仅供参考
完成前面的步骤后,我注意到 .pubxml 文件自动更改了。这是已经做出的差异(自动不受我的任何干扰)
所以我认为这是一种更好的方法,因为它对开发人员来说更容易,而且它让 visual studio 自己解决问题,而不用强迫它做特定的事情。
当我使用 Visual Studio 通过“发布为 Azure WebJob”部署我的项目时,我在标题中收到错误。
已通过从 .pubxml 文件中删除以下标记来修复。删除标记后必须 exit/restart VS(否则 VS 会将其重新添加)。
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" />
</ItemGroup>
在项目根目录中创建一个 Parameters.xml 文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter name="DefaultConnection-Web.config Connection String"
description="DefaultConnection"
defaultValue="Server=tcp:x.database.windows.net,1433;Database=x_db;User ID=x@y;Password=z;Trusted_Connection=False;etc." tags="" />
</parameters>
所有其他缺少的配置元素也可以在此处添加。
我有 Visual Studio 2015 更新 3,我遇到了同样的问题。我发现对我有用的解决方案如下:
1) 在属性 -> 发布配置文件下打开 *.pubxml 文件。
2) 在 PublishDatabaseSettings 部分下查找 Path 属性:
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="eRecall.ETL.Models.erecallContext" Order="1" Enabled="False">
<Destination Path="" />
<Object Type="DbCodeFirst">
<Source Path="DBContext" DbContext="eRecall.ETL.Models.erecallContext, eRecall.ETL" />
</Object>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
3) 将 Path 属性值设置为以下内容:
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="eRecall.ETL.Models.erecallContext" Order="1" Enabled="False">
<Destination Path="{deployment connection string}" />
<Object Type="DbCodeFirst">
<Source Path="DBContext" DbContext="eRecall.ETL.Models.erecallContext, eRecall.ETL" />
</Object>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
4) 删除 Azure 作业收集计划程序中的现有 Web 作业部署。
5) 重新部署网络作业,从调度程序重新运行 网络作业,它开始正常工作!
希望对您有所帮助。
问题的原因是以下之一:
- 更改
web.config
中的连接字符串的名称。 - 在
web.config
中添加新的连接字符串
解决方案
- Select网站项目,right-click就可以了,点击发布。
按设置 link 并从 pop-up window select 'Settings' 选项卡
取消选中所有连接字符串中的
use this connection string at runtime
。
- 点击
Save
按钮关闭window。 (无需重启Visual Studio) - 再次尝试发布网站,应该没有问题。
- 您可以像以前一样重新配置设置,取消选中只会触发 VS 重新生成 .pubxml 文件,因此您根本不会被迫更改设置。
注意
我正在使用 VS 2017(根据评论,这也适用于 Visual Studio 2013)
仅供参考
完成前面的步骤后,我注意到 .pubxml 文件自动更改了。这是已经做出的差异(自动不受我的任何干扰)
所以我认为这是一种更好的方法,因为它对开发人员来说更容易,而且它让 visual studio 自己解决问题,而不用强迫它做特定的事情。