Как настроить строки подключения для проекта 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 Аргумент String не может быть пустым или пустым.
C:\Program Files (X86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(4270,5): Ошибка: соединение MyWebJob.Models.MoreDataEntities-Web.config Аргумент String не может быть пустым или пустым.
Существует два варианта развертывания WebJob
Когда я связываю свой веб-сайт с проектом веб-сайта, он развертывается с веб-сайтом без ошибок. Однако, когда я пытаюсь развернуть его самостоятельно, я получаю указанную выше ошибку в моей консоли и списке ошибок, но веб-приложение все еще развернуто.
Как я могу самостоятельно развернуть свой webjob и избавиться от этой постоянной "ошибки"?
Ответы
Ответ 1
Я обнаружил, что предоставление значения для
<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>
Надеюсь, что это поможет.
Ответ 2
Я обнаружил, что удаление каталога obj
в проекте WebJob очистит область промежуточного контура, в которой будет опубликован пакет WebJob, который будет опубликован. Опубликование было успешно.
Ответ 3
Причина проблемы
Измените имя строки подключения в Web.Config или/и добавьте новую строку подключения в Web.Config.
Решение
- Выберите проект веб-сайта, щелкните его правой кнопкой мыши и нажмите публикацию.
![введите описание изображения здесь]()
-
Нажмите ссылку настроек и во всплывающем окне выберите вкладку "Настройки"
-
Снимите флажок use this connection string at runtime
со всех строк подключения.
![введите описание изображения здесь]()
- Нажмите кнопку
Save
, чтобы закрыть окно. (Нет необходимости перезапускать Visual Studio)
- Попробуйте опубликовать веб-сайт еще раз, и он должен опубликоваться без проблем.
ПРИМЕЧАНИЕ
Я использую VS 2017
Только для заметки
После того, как я сделал предыдущие шаги, я заметил, что файл .pubxml изменился автоматически. вот различие, которое было сделано (автоматически без какого-либо вмешательства со стороны меня)
Итак, я думаю, что это лучший способ, потому что это проще для разработчика, а также позволяет визуальной студии самостоятельно решать свои проблемы, не заставляя ее делать что-то конкретное.
![введите описание изображения здесь]()