WebサイトとWebジョブをセットアップしようとしていますが、Webサイトとは別にWebジョブを公開しようとするとエラーが発生します(つまり、コンテキストメニューから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をデプロイするための2つのオプションがあります
WebジョブをWebサイトプロジェクトにリンクすると、エラーなしでWebサイトとともにデプロイされます。ただし、個別にデプロイしようとすると、コンソールとエラーリストに上記のエラーが表示されますが、Webジョブはデプロイされたままです。
Webジョブを個別にデプロイして、この永続的な「エラー」を取り除くにはどうすればよいですか?
私は
<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>
お役に立てば幸いです。
WebJobプロジェクト内のobj
ディレクトリを削除すると、公開するWebJobパッケージがビルドされているステージング領域がクリアされることがわかりました。その後、公開は成功しました。
問題の理由
Web.Configの接続文字列の名前を変更するか、Web.Configに新しい接続文字列を追加します。
ソリューション
設定リンクを押し、ポップアップウィンドウから[設定]タブを選択します
すべての接続文字列からuse this connection string at runtime
のチェックを外します。
Save
ボタンをクリックしてウィンドウを閉じます。 (Visual Studioを再起動する必要はありません)[〜#〜]注[〜#〜]
VS2017を使用しています
注
前の手順を実行した後、.pubxmlファイルが自動的に変更されていることに気付きました。これが(私からの干渉なしに自動的に)行われた違いです
したがって、これは開発者にとってより簡単であり、ビジュアルスタジオが特定のことを強制することなく自分で問題を解決できるため、より良い方法だと思います。