Proxy 使用LibGit2Sharp抛出的公司防火墙后面的Git网络操作

Proxy 使用LibGit2Sharp抛出的公司防火墙后面的Git网络操作,proxy,ntlm,git-push,libgit2sharp,Proxy,Ntlm,Git Push,Libgit2sharp,我正在尝试使用LibGit2Sharp来git推送origin,方法如下 using(var repo = new Repository("path\to\repo\.git")) { var commit = repo.Commit("Commit message", author, committer); var options = new PushOptions{ CredentialsProvider = (u, s, t) => new UserNamePasswo

我正在尝试使用LibGit2Sharp来
git推送origin
,方法如下

using(var repo = new Repository("path\to\repo\.git"))
{
   var commit = repo.Commit("Commit message", author, committer);

   var options = new PushOptions{ CredentialsProvider = (u, s, t) => new UserNamePasswordCredentials { Username = "username", Password = "password" } };
   repo.Network.Push(repo.Branches("master"), options); 
}
我听到一个libgit2sharp异常说

其他信息:设置代理失败:参数不正确

但是在git bash中,当我执行git push origin时,一切都很好

我们有NTLM代理在工作,我正在推一个内部网https远程URI。我已将代理配置为
http://username:password@proxy.fqdn:80
,如下所示:

  • Env-vars:HTTP\u代理和HTTPS\u代理
  • repos.git/config:
    • remote.origin.proxy
    • http.proxy
    • https.proxy
    • http.sslCAInfo&https.sslCAInfo-这是主机根CA的路径
通读之后,libgit2sharp似乎应该可以找到代理参数。有人在ntlm工作吗

我正在使用: Windows7、LibGit2Sharp.0.22.0、Git2.10.1、Windows.1、Bash4.3.46、net4.5.2

我们也非常欢迎通过替代方案实现推送的任何想法/技巧

这来自“”,它直接调用Windows API

它传递一个消息以设置或检索包含现有会话句柄或请求句柄上的代理数据的结构

只有当
WINHTTP\u OPTION\u WEB\u SOCKET\u KEEPALIVE\u INTERVAL
设置为低于
15000
的值时,该函数才会返回
ERROR\u INVALID\u参数(参数无效)

我不知道为什么会出现这个问题,但请首先尝试只设置环境变量
HTTP\u PROXY
&
HTTPS\u PROXY
(而不是
HTTP.PROXY
&
HTTPS.PROXY
),并确保对两个代理环境变量使用相同的HTTP url(不是
HTTPS\u PROXY
的HTTPS url)

这方面的官方libgit2错误是,应该通过和解决。

但是,该修复程序尚未发布。

@aateeque您的用户名或代理密码中是否有任何特殊字符?没有,没有。就是信,numbers@aateeque我在编辑答案时引用了一个补丁(尚未发布)@aateeque从技术上讲,应该可以获取libgit2主源代码(包括补丁:),然后重新编译它,然后基于新编译的库重建LibGitSharp:这至少可以测试这个问题是否通过最新的libgit2.spot解决!刚刚试用了0.23.0-pre20160922233542,效果不错!谢谢