无法推送 nuget 包。 "nuget push" 将授权添加到 Nuget 服务器后命令不起作用



我遵循本指南将其设置为我的nuget-server:http://blog.fermium.io/nuget-server-with-basic-authentication/

对于我使用的完整授权解决方案,您可以在此处找到它:https://github.com/devbridge/azurepowertools/tree/master/devbridge.basicauthentication

它可以正常工作,在向我的Nuget服务器上冲浪时,我会登录,到目前为止效果很好。我还可以通过在Visual Studio中输入用户名/密码访问现有的Nuget软件包。

试图从Visual Studio推出Nuget包装时出现的问题,该工作室在将授权添加到Nuget-Server之前正常工作。

nuget.config(%appdata% nuget nuget.config)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="mynuget" value="http://mynuget.azurewebsites.net/nuget" />
  </packageSources>
    <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSourceCredentials>
    <mynuget>
      <add key="Username" value="mynugetUsername" />
      <add key="ClearTextPassword" value="mynugetPassword" />
    </mynuget>
  </packageSourceCredentials>
</configuration>

nuget push c: temp packages*.nupkg -s http://mynuget.azurewebsites.net/apikey -verbosity详细信息

请提供:http://mynuget.azurewebsites.net/

system.invalidoperationException:无法在非交互模式下提示输入。

如何解决此问题?

当我在Visual Studio Package Manager Console窗口中运行相同的推送命令时,我会遇到相同的错误。因为"软件包管理器"控制台窗口是非交互模式窗口,我们在运行命令时无法键入任何参数。

所以我建议您使用命令提示符窗口推动包并运行nuget push命令。

我尚未找到对此的最佳解决方案,但是我做了一个解决方案,这可能对某人有帮助。仍在寻找一个更清洁,更好的解决方案。我最终允许在没有授权的情况下放置命令,因为它仍然需要Apikey推动包装。(请参阅下文)

    public void AuthenticateUser(Object source, EventArgs e)
    {
        var context = ((HttpApplication)source).Context;
        if (context.Request.HttpMethod != "PUT")
        {
            string authorizationHeader = context.Request.Headers[HttpAuthorizationHeader];
            // Extract the basic authentication credentials from the request
            string userName = null;
            string password = null;
            if (!this.ExtractBasicCredentials(authorizationHeader, ref userName, ref password))
            {
                return;
            }
            // Validate the user credentials
            if (!this.ValidateCredentials(userName, password))
            {
                return;
            }
        }
        // check whether cookie is set and send it to client if needed
        var authCookie = context.Request.Cookies.Get(AuthenticationCookieName);
        if (authCookie == null)
        {
            authCookie = new HttpCookie(AuthenticationCookieName, "1") { Expires = DateTime.Now.AddHours(1) };
            context.Response.Cookies.Add(authCookie);
        }
    }

由此:https://github.com/devbridge/azurepowertools/tree/master/devbridge.basicauthentication

相关内容

  • 没有找到相关文章

最新更新