Как настроить профили публикации для использования аутентификации NTLM

В Visual Studio 2012 использование профилей публикации вместе с веб-развертыванием значительно упрощает развертывание. Тем не менее, он по-прежнему не хватает нескольких вещей или, может быть, я непока не знаю, как его использовать.

Я предпочитаю использовать проверку подлинности NTLM без сохранения имени пользователя и пароля (особенно) в профилях публикации. Как это может быть сделано? Если я оставлю имя пользователя и пароль пустыми, меня попросят об этом. Есть ли способ, как вручную изменить файлы .pubxml?Почему имя пользователя / пароль хранятся вPublishProfileName.pubxml что я проверил в системе контроля версий, а не вPublishProfileName.pubxml.user что локально для каждого пользователя? Я мог бы по крайней мере сохранить имя пользователя, но, очевидно, неЯ не хочу, чтобы это было зарегистрировано.Сама Конфигурация не является частьюPublishProfileName.pubxml но хранится вPublishProfileName.pubxml.user как .LastUsedBuildConfigurationТо же самое для Платформы как последний пункт.Мне также не хватает поддержки для нескольких серверов. В настоящее время я вынужден использовать пакетные файлы в дополнение к публикации профилей.

РЕДАКТИРОВАТЬ

Командная строка, которая отлично работает для публикации

MSBuild.Exe MyProject.sln /p:Configuration=QA /p:DeployOnBuild=true;PublishProfile=PublishToQA;AllowUntrustedCertificate=true /p:authType=NTLM /p:UserName=

В этом я хотел бы опустить/p:Configuration=QA если конфигурация становится частью самого профиля публикации.

Ответы на вопрос(2)

Решение Вопроса

Я предпочитаю использовать проверку подлинности NTLM без сохранения имени пользователя и пароля (особенно) в профилях публикации. Как это может быть сделано? Если я оставлю имя пользователя и пароль пустыми, меня попросят об этом. Есть ли способ, как вручную изменить файлы .pubxml?

Ваша аутентификация обычно определяется тем, как размещается Web Deploy. По умолчанию, если вы используете службу веб-управления, вы используете для авторизации пользователей IIS. С пользователями IIS вы можете контролировать, какие пользователи имеют разрешения на определенные сайты / приложения. Вы также можете настроить WMSVC на использование аутентификации Windows. Если у вас есть проблемы с использованием VS для этих сценариев, дайте мне знать. Если вы используете службу удаленного агента для размещения Web Deploy, то в этом случае вы 'Я буду использовать Windows Auth.

Почему имя пользователя / пароль хранятся вPublishProfileName.pubxml что я проверил в системе контроля версий, а не вPublishProfileName.pubxml.user что локально для каждого пользователя? Я мог бы по крайней мере сохранить имя пользователя, но, очевидно, неЯ не хочу, чтобы это было зарегистрировано.

У нас есть другой механизм, позволяющий вам определить, какая информация является частной / общедоступной. За исключением пароля вся информация о публикации публикуется (и проверено по умолчанию). Чтобы упростить конструкцию, вы можете использовать общедоступный профиль публикации или профиль, к которому нет общего доступа. Между ними нет профиля, в котором некоторые поля являются общими, а другие нет. Здесь пароль указан в специальном регистре и зашифрован для каждого пользователя / компьютера в файле .pubxml.user.

Если ты'Я хотел бы иметь личный профиль публикации, тогда вы просто не можете проверить в .pubxml файле, который соответствует профилю публикации. Они хранятся в Properties \ PublishProfiles (или My Project \ PublishProfiles для VB) и просто исключают их из проекта и неПроверьте файлы в. Диалог публикации ищет профили на диске, а не только те, которые есть в проекте. Все должно продолжать работать.

Мы не• Поддерживать концепцию выборочного хранения значений в файле .pubxml.user. Диалог публикации будет хранить только заданное количество значений в этом файле. Вместо

Сама Конфигурация не является частьюPublishProfileName.pubxml но хранится вPublishProfileName.pubxml.user как .LastUsedBuildConfigurationТо же самое для Платформы как последний пункт.

Это была ошибка, которую нужно было сохранить в файле .pubxml, а не в файле .pubxml.user. С тех пор мы исправили это, но покаУ меня еще не было возможности выпустить обновление.

Свойство Configuration не может быть установлено в профиле публикации. Свойство Configuration является основной частью процесса сборки. Чтобы быть более конкретным, причина, почему мы неЭто свойство вызывается из-за того, что файл .pubxml импортируется в определение файла .csproj / .vbproj во время сборки & публиковать. Поскольку другие свойства определяются на основе конфигурации, вы не можете изменить значение, если онобыло установлено. Я просто написал слишком много подробностей на эту тему наhttp://sedodream.com/2012/10/27/MSBuildHowToSetTheConfigurationProperty.aspx, Это ограничение относится к MSBuild, а не к публикации. Для командной строки вы должны указать конфигурацию следующим образом: msbuild.exe myproj.csproj /p:...( Прочие свойства) ... / p: Configuration =

Мне также не хватает поддержки для нескольких серверов. В настоящее время я вынужден использовать пакетные файлы в дополнение к публикации профилей.

Мы неУ меня нет прямой поддержки для этого, но если вы расширите свои потребности, я смогу помочь. К вашему сведению, у меня есть расширение, которое может вас заинтересовать. Я разместил 5-минутное видео дляhttp://sedodream.com/2012/03/14/PackageWebUpdatedAndVideoBelow.aspx.

 Lobstrosity14 дек. 2012 г., 00:44
Похоже, что ни одна проблема (имя пользователя в .pubxml вместо .pubxml.user и конфигурация сборки в .pubxml.user вместо .pubxml) не была решена в последнее времяВеб-инструменты 2012.2 RC релиз. Есть шанс, что ониБудет ли решен в финальной версии в начале следующего года?
 Sayed Ibrahim Hashimi23 окт. 2012 г., 23:26
@amit_g спасибо за отзыв пользователя. Я'Отнесу это моей команде. После того, как мы выпустим обновление при редактировании / создании нового профиля, LastUsedConfiguration будет сохранен в файле .pubxml. Поэтому, когда пользователь открывает профиль в VS, конфигурация будет установлена правильно. К сведению, для сценариев командной строки всегда нужно указывать конфигурацию. При запуске msbuild.exe после настройки Конфигурация не должна изменяться.
 Sayed Ibrahim Hashimi27 окт. 2012 г., 21:29
Для такого типа обратной связи лучше всего подать ошибку на connect.microsoft.com. Возможно, мы сможем что-то здесь сделать, но нам нужно это исследовать.
 amit_g23 окт. 2012 г., 19:31
Ждем этого обновления с исправлением для конфигурации и платформы, хранящихся в профиле .user. Как это повлияет на пользователя, у которого нет профиля, который получил новый профиль от TFS и опубликовал его? Скажем, профиль (PublishToQA.pubxml) должен использовать конфигурацию QA, но PublishToQA.pubxml.user отсутствует, а последняя использованная конфигурация была Debug? Думаю, я бы проверил это с другим членом команды.
 amit_g27 окт. 2012 г., 19:22
Еще раз спасибо за комментарий и блог. Это имеет смысл. Кажется, что вещи сбивают с толку, потому что публикация является частью сборки, а не поверх нее. Под этим я подразумеваю, что, вероятно, было бы гораздо проще понять, если бы сборка и публикация были отдельными, и, возможно, MSDeploy.exe или MSPublish.exe (новый exe) взяли на себя роль публикации и позволили MSBuild делать то, что уже было. делает лучше всего, т.е. построить данный проект для данной конфигурации и других свойств.
 ShadowChaser23 апр. 2013 г., 23:19
Разочарование - та же проблема здесь. Не уверен, что согласен с Саидомs утверждение, что аутентификация определяется тем, как размещается MSDeploy. Требование для большинства предприятий простое: минимизируйте площадь атаки, используйте встроенную аутентификацию. Служба агента MSDeploy увеличивает площадь поверхности атаки и неТ патч рядом с Windows. Имя пользователя и пароли неВозможность автоматической непрерывной интеграции. Оснастка Powershell для msdeploy безнадежно нарушена для аутентификации NTLM. Весь дизайн pubxml в основном нарушен для корпоративных сценариев. Тьфу.
 amit_g24 окт. 2012 г., 01:28
Отлично. Таким образом, у процесса публикации нет возможности использовать зарегистрированные учетные данные без необходимости ввода имени пользователя и пароля? Кроме того, я не уверен, что понимаю часть комментария, касающуюся командной строки. Я обновил вопрос с помощью командной строки, которую я использую для публикации на нескольких серверах. Haven»пока не попал в пакет-сеть.
 Sayed Ibrahim Hashimi27 окт. 2012 г., 04:57
@amit_g смотрите мои правки, связанные со свойством Configuration. Я написал в блоге с кучей деталей об этом.
 amit_g23 окт. 2012 г., 19:27
Мое второе замечание касается общих профилей. Каждый профиль состоит из двух частей: общей (зарегистрированной) и не общей (.user), которая является локальной. Мы используем отдельные имена пользователей, но все еще хотим использовать общий профиль. Было бы разумнее сохранить имя пользователя / пароль в профиле .user, чтобы у каждого пользователя были свои настройки, но при этом он мог использовать общий профиль (который содержит все остальные настройки). Это важно, когда многие пользователи могут публиковать, чтобы сказать QA, мы неЯ не хочу, чтобы каждый создал свой собственный профиль публикации, когда единственное, что отличается, - это имя пользователя / пароль.
 Sayed Ibrahim Hashimi29 окт. 2012 г., 02:14
@amit_g круто, спасибо за комментарии.
 amit_g28 окт. 2012 г., 18:37
Конечно, сделаю. Я думал, что должен быть способ сделать это в файле csproj или pubxml. Еще раз спасибо за все комментарии. Как и во многих других вопросах и блогах, вы мне очень помогли.
 amit_g23 окт. 2012 г., 19:17
Спасибо за ответ. Я должен был упомянуть, что серверы настроены правильно, чтобы принимать NTLM (я использовал пользователей Windows вместо пользователей IIS) для Web Deploy с использованием WMSVC. Мое первое замечание касалось профилей публикации, то есть, как мне указать профилям публикации использовать NTLM. Если я опускаю имя пользователя / пароль при настройке или удалении его вручную из файла .pubxml, он отображает диалоговое окно учетных данных. Я могу ввести свои учетные данные как MyDomain \ MyWindowsUsername и MyPassword, и это работает нормально, но я должен делать это каждый раз. Я ищу вариант, чтобы сказать ему использовать мои текущие учетные данные Windows.
 amit_g27 окт. 2012 г., 19:27
Извините за возвращение к аутентификации снова и снова. В командной строке, если / p: authType = NTLM / p: UserName = используется MSBuild.exe использует вошедшего в систему пользователя 'Учетные данные. Обратите внимание (я уверен, что вы уже знаете), что я должен предоставить свойство UserName как пустое в командной строке, чтобы оно работало, т.е. я могу 'просто опустите его, если он будет пустым. Есть ли способ сделать это в профилях публикации или в файлах csproj? Я в порядке с ручным редактированием любого из этих файлов.

pubxml файлы, поэтому смело удаляйте пароль.

Чтобы переключиться на NTLM, изменитеAuthType вNTLM во-первых .PropertyGroup

Platform а такжеConfiguration оставьте конфигурацию сборки,user Файл просто хранит их, поэтому Visual Studio знает, какая была последняя развернутая конфигурация.

Под мультисервером вы подразумеваете веб-ферму? Если это так, вы можете попробовать посмотреть наWeb Farm Framework который в основном выполняет синхронизацию MSDeploy с основного сервера на другие.

Кроме того, вы можете переключиться на командную строку и использоватьpostSync загрузить и выполнить командный файл на удаленном сервере, который запускает другие развертывания оттуда.

 amit_g23 окт. 2012 г., 19:12
Я просил "контроллер» для WFF и до тех пор я продолжал использовать командные файлы, чтобы заботиться о множественных развертываниях сервера.
 amit_g23 окт. 2012 г., 19:11
Предполагается, что профили публикации хранят платформу и конфигурацию таким образом, чтобы при конкретном профиле публикации, например, MyPublishProfileForQA используется моя конфигурация QA (как часть определения профиля) используется. @Sayed, хотя и обработал эту часть. Таким образом, до обновления нам придется предоставлять эту информацию вручную.
 amit_g23 окт. 2012 г., 19:08
Спасибо Ричарду за ответ. Я редактировал файл pubxml различными способами, чтобы он работал, включая добавление <AuthType>NTLM </ AuthType> но даже тогда он запрашивает учетные данные пользователя. Если я заполнил свои учетные данные пользователя Windows, это работает, но я надеялся, что, поскольку я уже вошел в систему и если бы я мог каким-то образом сказать ему, чтобы использовать NTLM, он взял бы мои текущие учетные данные Windows и использовал их, не вводя их каждый раз.

Ваш ответ на вопрос