'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) 重新部署网络作业,从调度程序重新运行 网络作业,它开始正常工作!

希望对您有所帮助。

问题的原因是以下之一:

  1. 更改 web.config 中的连接字符串的名称。
  2. web.config
  3. 中添加新的连接字符串

解决方案

  1. Select网站项目,right-click就可以了,点击发布。

  1. 按设置 link 并从 pop-up window select 'Settings' 选项卡

  2. 取消选中所有连接字符串中的 use this connection string at runtime

  1. 点击Save按钮关闭window。 (无需重启Visual Studio)
  2. 再次尝试发布网站,应该没有问题。
  3. 您可以像以前一样重新配置设置,取消选中只会触发 VS 重新生成 .pubxml 文件,因此您根本不会被迫更改设置。

注意
我正在使用 VS 2017(根据评论,这也适用于 Visual Studio 2013)

仅供参考
完成前面的步骤后,我注意到 .pubxml 文件自动更改了。这是已经做出的差异(自动不受我的任何干扰)

所以我认为这是一种更好的方法,因为它对开发人员来说更容易,而且它让 visual studio 自己解决问题,而不用强迫它做特定的事情。