Как исправить ошибку аутентификации 401 при публикации на самосмещенном сервере NuGet

Я следовал этим инструкциям для размещения сервера NuGet (версия 2.2.2) в нашей интрасети. Он прекрасно работает, когда перечисляет пакеты и получает их в VS 2012. Но когда я создаю пакет с помощью Nuget Package Explorer и пытаюсь опубликовать его, мне выдается диалоговое окно безопасности Windows, запрашивающее учетные данные. Независимо от того, какие учетные данные я ввожу, он постоянно запрашивает у меня имя пользователя и пароль и возвращает ошибку 401 аутентификации. Почему сервер NuGet запрашивает учетные данные Windows и как я могу от него избавиться? Это только делает это для публикации и ничего больше.

4 ответа

Есть еще одна вещь, кроме настройки разрешений для папки Packages. В моем случае я должен использовать URL, как

http://<server>/<nuget_virtual_dir>/api/v2/package/ 

для толкания. Это было единственное решение в моем случае.

Когда вы используете NuGet push, вам нужно поместить /api/v2/package после URL-адреса сервера NuGet (пример http://myhost/myNuGetServer/api/v2/package)

Если вы используете пользовательский интерфейс NuGet (NuGet Package Explorer), вам нужно указать только URL сервера, а не URL (например, http://myhost/myNuGetServer/)

Также позаботьтесь о настройке apikey в Web.config и используйте его в NuGet push!

Я думаю, что нашел решение (по крайней мере, мои проблемы):

Я отказался от проблемы Nuget и сосредоточился на ошибке ISS 401. Затем я дал разрешения пользователю "IIS AppPool\DefaultAppPool" на корень приложения (или на ваш AppPool, который использует приложение, в моем случае "ASP.NET v4.0"). Тогда это работает как шарм!

Дополнительная информация (и хорошее объяснение проблемы): Ошибка ApplicationPoolIdentity в IIS7 401

Этот ответ SO может оказаться полезным, так как он описывает, как настроить учетные данные на рабочей станции публикации (или на сервере сборки, но в любом случае это точная информация).

Другие вопросы по тегам