问题
I have set up a private nuget feed using a empty web application and the nuget server package. It is all working, I can retrieve from the feed, and I can publish to the private feed using the Nuget Package Explorer. But I cant publish via the command line - it prompts for credentials. I have set the ApiKey in the web application in the Appsettings, to a simple password, and I have tried adding the ApiKey to the push command. This Prompts me for a username and then a password. I have also tried the SetApiKey command but I get the same behavior. On the build server I am trying the same thing with the same results.
Here is the error messages from the build Log (identifying info x'd out)
nuget pack "C:\Builds\2\OE Phase II\Common\src\WebApi\Web.Http\Bxxxxxxxs.Web.Http.csproj" -IncludeReferencedProjects -Properties Configuration=Release
nuget SetApiKey Bxxxxxxx1 -Source http://tfs12.xxxxxxxrps.com/Nuget
nuget push *.nupkg -s http://tfs12.xxxxxxxrps.com/Nuget/
C:\Builds\2\OE Phase II\Common\bin\xxxxxxx.Web.Http.dll
1 File(s) copied
Attempting to build package from 'xxxxxxx.Web.Http.csproj'.
Packing files from 'C:\Builds\2\OE Phase II\Common\src\WebApi\Web.Http\bin\Release'.
Using 'xxxxxxxs.Web.Http.nuspec' for metadata.
Found packages.config. Using packages listed as dependencies
Successfully created package 'C:\Builds\2\OE Phase II\Common\bin\xxxxxxxs.Web.Http.1.0.0.0.nupkg'.
The API Key 'xxxxxxx' was saved for 'http://tfs12.xxxxxxxrps.com/Nuget'.
Pushing Bxxxxxxxrs.Data 1.0.0.0 to 'http://tfs12.xxxxxxxrps.com/Nuget/'...
Please provide credentials for: http://tfs12.xxxxxxxrps.com/Nuget/
Object reference not set to an instance of an object.
UserName: Password:
回答1:
Found solution for Windows Server 2012 and Nuget.Server 2.8.5
- Open IIS manager
- find your "Nuget.Server" application
- right click and select "Edit permissions"
- go to "Security" tab
Add "write" permission for group "Everyone".
回答2:
API key is for uploading/pushing packages. Looks like you have a http proxy enabled and you can set the username and password by calling nuget.exe config command.
Some example:
nuget config -Set HTTP_PROXY=http://*.*.. -Set HTTP_PROXY.USER=domain\user
nuget.config HTTP_PROXY
http://docs.nuget.org/docs/reference/command-line-reference
回答3:
This worked for me: Site > Authentication > enable Windows Authentication (I only had anonymous by default) and push will use your domain account without user input.
回答4:
Also which version of NuGet.Server package did you use? NuGet already released 2.7.2 version of it.
Can you try and see if the null ref exception still reproes? Thanks.
回答5:
You may find this SO answer helpful, as it covers how to configure credentials on a workstation and/or build server, which is required to push via a command-line to a server that requires authentication (e.g. private feed.)
An API key is not required to publish.
回答6:
I had this issue too and I knew it worked before, turns out I was using NuGet.exe 2.8.1 upgrading using
NuGet.exe update -self
took it to 2.8.3 and now works fine.
来源:https://stackoverflow.com/questions/20228184/pushing-to-private-nuget-feed-prompts-for-credentials