web-dev-qa-db-fra.com

Comment configurer des chaînes de connexion pour un projet WebJob?

J'essaie de configurer un site Web et une tâche Web, mais j'obtiens une erreur à chaque fois que j'essaie de publier la tâche Web indépendamment du site Web (c'est-à-dire en sélectionnant Publish as Azure WebJob dans le menu contextuel).

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (4270,5): Erreur: Chaîne de connexion 'MyWebJob.Models.MyDataEntities-Web.config' l'argument ne peut être nul ou vide.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (4270,5): Erreur: Le fichier "MyWebJob.Models.MoreDataEntities-Web L'argument de .config Connection String 'ne peut être null ou vide.

Il y a deux options pour déployer un WebJob

Lorsque je lie mon travail Web à un projet de site Web, celui-ci se déploie avec le site Web sans erreur. Cependant, lorsque j'essaie de le déployer de manière indépendante, l'erreur ci-dessus apparaît dans la console et dans la liste d'erreurs, mais la tâche Web est toujours déployée.

Comment puis-je déployer mon travail Web indépendamment et supprimer cette "erreur" persistante?

25
Enrico

J'ai trouvé que fournir une valeur pour 

 <Destination Path="" /> 

dans votre profil de publication, le fichier pubxml s'est débarrassé du problème. Cela se trouve généralement dans\Properties\PublishProfiles. Vous avez probablement quelque chose comme:

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

Le changer pour le suivant a résolu le problème pour moi:

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

J'espère que cela pourra aider.

46
Willisterman

J'ai constaté que la suppression du répertoire obj dans le projet WebJob effacera la zone de stockage intermédiaire dans laquelle le package WebJob à publier est en cours de construction. Publier a ensuite été réussi.

3
Craigology

Raison du problème  
Modifiez le nom de la chaîne de connexion dans Web.Config ou/et ajoutez une nouvelle chaîne de connexion à Web.Config.

Solution

  1. Sélectionnez le projet de site Web, cliquez dessus avec le bouton droit de la souris et cliquez sur Publier.
     enter image description here

  1. Appuyez sur le lien Paramètres et dans la fenêtre contextuelle, sélectionnez l'onglet "Paramètres".

  2. Décochez le use this connection string at runtime de toutes vos chaînes de connexion. 

 enter image description here

  1. Cliquez sur le bouton Save pour fermer la fenêtre. (Pas besoin de redémarrer Visual Studio)
  2. Essayez de publier à nouveau le site Web, et il devrait publier sans problème.

NOTE 
J'utilise VS 2017

Juste pour la note  
Après avoir suivi les étapes précédentes, j'ai remarqué que le fichier .pubxml était modifié automatiquement. voici la différence qui a été faite (automatiquement sans aucune ingérence de ma part) 

Donc, je pense que c'est mieux, parce que c'est plus facile pour le développeur et aussi de laisser le studio visuel résoudre ses problèmes lui-même, sans le forcer pour des choses spécifiques.

 enter image description here

1
Hakam Fostok