27
votes

I am trying to setup a website and webjob, but get an error everytime I try to publish the webjob independently of the website (i.e. Selecting Publish as Azure WebJob from the context menu)

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(4270,5): Error : The 'MyWebJob.Models.MyDataEntities-Web.config Connection String' argument cannot be null or empty.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(4270,5): Error : The 'MyWebJob.Models.MoreDataEntities-Web.config Connection String' argument cannot be null or empty.

There are two options for deploying a WebJob

When I link my webjob to a website project, it deploys with the website without error. However, when I try to deploy it independently I get the above error in my console and Error List, but the webjob is still deployed.

How can I deploy my webjob independently and get rid of this persistent "error"?

3
Have you tried deleting the publish profile file and re-publishing?Maria Ines Parnisari
I have the same problem, and deleting and republish doesn't change itsjkp
@l19 Many times, because the error only disappears after you delete the publish profile and clean.Enrico
More answers can be found here: stackoverflow.com/questions/11580680/…silkfire

3 Answers

48
votes

I found that providing a value for

 <Destination Path="" /> 

in your publish profile pubxml file got rid of the issue. This can usually be found in \Properties\PublishProfiles. You probably have something like:

<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>

Changing it to the following fixed it for me:

<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>

Hope that helps.

3
votes

I found that deleting the obj directory within the WebJob project will clear the staging area in which the WebJob package to be published is being built. Publish was then successful.

1
votes

Reason of the problem
Change the name of the connection string in the Web.Config or/and adding a new connection string to the Web.Config.

Solution

  1. Select the website project, right click on it, and click publish.
    enter image description here

  1. Press the settings link and from the pop-up window select the 'Settings' Tab

  2. Uncheck the use this connection string at runtime from all your connection strings.

enter image description here

  1. Click Save button to close the the window. (No need to Restart Visual Studio)
  2. Try to publish the website again, and it should publish without problem.

NOTE
I am using VS 2017

Just for Note
After I did the previous steps, I noticed that the .pubxml file changed automatically. here is the difference which has been made (automatically without any interference from me)

So I think this is better way because it is easier for developer and also it let the visual studio to solve its problems himself, without forcing it for specific thing.

enter image description here