' DefaultConnection-Web.config连接字符串'参数不能为null或为空。 VS2013

时间:2015-03-11 20:23:45

标签: visual-studio-2013 azure-webjobs

当我使用"发布为Azure WebJob"使用Visual Studio 2013 / update 4,我在标题中收到错误。

4 个答案:

答案 0 :(得分:41)

通过从.pubxml文件中删除以下标记来解决此问题。删除标记后必须退出/重新启动VS(或VS将其重新添加)。

<ItemGroup>
  <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" />
</ItemGroup>

答案 1 :(得分:15)

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

<强>解决方案

  1. 选择网站项目,右键单击它,然后单击“发布”。 enter image description here
    1. 按设置链接,然后从弹出窗口中选择“设置”标签

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

    3. enter image description here

      1. 点击Save按钮关闭窗口。 (无需重新启动Visual Studio)
      2. 尝试再次发布网站,它应该没有问题发布。
      3. 注意
        我正在使用VS 2017(并根据Visual Studio 2013中的评论)

        仅供注意
        完成前面的步骤后,我注意到.pubxml文件自动更改。这是差异(自动不受我的干扰)

        所以我认为这是一种更好的方式,因为它对开发人员来说更容易,也让视觉工作室自己解决问题,而不会强迫它进入特定的事物。

        enter image description here

答案 2 :(得分:11)

在Project根目录中创建一个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>

此处还可以添加所有其他缺少的配置元素。

答案 3 :(得分:4)

我有Visual Studio 2015 Update 3,我遇到了同样的问题。我发现对我有用的解决方案如下:

1)打开属性 - &gt;下的* .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作业收集计划程序中的现有webjob部署。

5)重新部署webjob,从调度程序重新运行webjob,它开始没有问题!

希望这有帮助。