Visual studio 2013 “DefaultConnection-Web.config连接字符串”参数不能为null或空。VS2013

Visual studio 2013 “DefaultConnection-Web.config连接字符串”参数不能为null或空。VS2013,visual-studio-2013,azure-webjobs,Visual Studio 2013,Azure Webjobs,当我使用Visual Studio 2013/update 4以发布为Azure WebJob的方式部署我的项目时,我在标题中得到了错误。通过从.pubxml文件中删除以下标记来修复。必须在删除标记后退出/重新启动VS,否则VS会将其添加回 <ItemGroup> <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" /

当我使用Visual Studio 2013/update 4以发布为Azure WebJob的方式部署我的项目时,我在标题中得到了错误。

通过从.pubxml文件中删除以下标记来修复。必须在删除标记后退出/重新启动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 Update 3,我也面临同样的问题。我发现适合我的解决方案如下:

<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>
1在属性->发布配置文件下打开*.pubxml文件

2在PublishDatabaseSettings部分下查找路径属性:

<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将路径属性值设置为以下值:

<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作业集合计划程序中的现有webjob部署

5重新部署webjob,从调度程序重新运行webjob,它将开始正常工作

希望这有帮助。

问题的原因 在web.config中更改和/或添加连接字符串的名称

解决方案

选择网站项目,右键单击它,然后单击发布。 按设置链接,然后从弹出窗口中选择“设置”选项卡

从所有连接字符串中取消选中“在运行时使用此连接字符串”

单击“保存”按钮关闭窗口。无需重新启动Visual Studio 再次尝试发布该网站,它应该不会出现问题。 注 我正在使用VS 2017,根据评论,这项工作也在Visual Studio 2013中进行

仅供参考 在完成前面的步骤后,我注意到.pubxml文件会自动更改。这是在没有任何干扰的情况下自动产生的差异

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


这是否会根据App.Config中连接字符串的名称而改变?这些字符串是在重新启动后为我读取的。这在我的情况下奏效了:谢谢你的回答。让我意识到我应该删除发布配置文件并创建一个新的。使用VS2015,更新2。我缺少的是重新启动Visual Studio部分。非常感谢。现在转到下一个问题…这在VS 2015的更新3中不起作用,请通过更改pubxml文件中的属性来查看我的答案。这对我起了作用,尽管它没有像我所希望的那样实际设置连接字符串。我猜它将来自App.config,这只是解决这个问题的一个必须解决的问题。黑魔法!那么部署为WebJob只是从项目根目录中的任何XML文件读取吗?不,不是从任何XML文件读取。这是可行的,但我不喜欢。我的第一次部署工作得很好,只有第二次部署抱怨缺少连接字符串。这对我来说很有效。VS2013。只需取消选中“发布”对话框中的“在运行时使用连接字符串”框。当我取消选中该选项并按“保存”时,visual studio将忽略它。当我再次打开设置时-该选项仍处于选中状态。我不能让它尊重我的偏好。我不能让它在不注入连接字符串的情况下运行迁移。因此,我必须有一个带有连接字符串的发布配置文件来运行迁移注入web.config,然后第二个没有连接字符串的发布配置文件没有迁移,然后清除web.config中的任何连接字符串。似乎是VS2017:15.6.7中的一个bug??或者AzureAppSerieTools构建15.0.40215.0-非常烦人!按照步骤操作,然后重新启动Visual Studio。重新启动错误发生后,该错误在VS 2019中不再有效。复选框在那里,但它们被忽略了,MS已经关闭了报告此问题的错误通知单。@JoshNoe很好的说明,但此答案仍然对使用VS 2017及之前的用户有帮助。如果您提供错误的链接,这将非常有用,我将根据您的注释更新我的答案。