Как исправить ошибку аутентификации 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 может оказаться полезным, так как он описывает, как настроить учетные данные на рабочей станции публикации (или на сервере сборки, но в любом случае это точная информация).