如何为WebJob项目设置连接字符串?

问题描述 投票:26回答:3

我正在尝试设置一个网站和webjob,但每次我尝试独立于网站发布webjob时都会出错(即从上下文菜单中选择Publish as Azure WebJob

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Microsoft.Web.Publishing.targets(4270,5):错误:'MyWebJob.Models.MyDataEntities-Web.config连接字符串'参数不能为null或为空。 C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Microsoft.Web.Publishing.targets(4270,5):错误:'MyWebJob.Models.MoreDataEntities-Web.config连接字符串'参数不能为null或为空。

部署WebJob有两种选择

当我将我的webjob链接到一个网站项目时,它会在网站上部署而不会出错。但是,当我尝试独立部署它时,我在控制台和错误列表中出现上述错误,但仍然部署了webjob。

如何独立部署我的webjob并摆脱这种持久的“错误”?

visual-studio-2013 azure-web-sites azure-webjobs
3个回答
47
投票

我发现提供的价值

 <Destination Path="" /> 

在您的发布配置文件pubxml文件摆脱了问题。这通常可以在\ Properties \ PublishProfiles中找到。你可能有类似的东西:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="Context" Order="1" Enabled="False">
      <Destination Path="" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Context, DAO" MigrationConfiguration="Context.Migrations.Configuration, DAO" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

将其更改为以下内容为我修复:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="Context" Order="1" Enabled="False">
      <Destination Path="{deployment connection string}" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Context, DAO" MigrationConfiguration="Context.Migrations.Configuration, DAO" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

希望有所帮助。


3
投票

我发现删除WebJob项目中的obj目录将清除正在构建要发布的WebJob包的暂存区域。然后发布成功了。


1
投票

问题的原因 更改Web.Config中的连接字符串的名称或/并向Web.Config添加新的连接字符串。

  1. 选择网站项目,右键单击它,然后单击“发布”。 enter image description here

  1. 按设置链接,然后从弹出窗口中选择“设置”选项卡
  2. 从所有连接字符串中取消选中use this connection string at runtime

enter image description here

  1. 单击Save按钮关闭窗口。 (无需重新启动Visual Studio)
  2. 尝试再次发布网站,它应该发布没有问题。

注意 我正在使用VS 2017

只是为了注意 完成前面的步骤后,我注意到.pubxml文件自动更改。这是差异(自动没有任何干扰)

所以我认为这是更好的方法,因为它对开发人员来说更容易,而且它让视觉工作室自己解决问题,而不是强迫它用于特定的事情。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.