На виртуальной машине Ubuntu 14.04 VMWare простые инструкции по адресу: [https://dotnet.github.io/getting-started/][1] работал нормально до следующего шага:
восстановление дотнета
Вот стек вызовов, который генерирует исключение:
System.ArgumentException: The value cannot be null or empty.
Parameter name: UserName
at System.Net.Http.CurlHandler.EasyRequest.SetProxyOptions(Uri requestUri)
at System.Net.Http.CurlHandler.EasyRequest.InitializeCurl()
at System.Net.Http.CurlHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Microsoft.Dnx.Tooling.Restore.NuGet.HttpSource.<GetAsync>d__11.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
at Microsoft.Dnx.Tooling.Restore.NuGet.NuGetv2Feed.<FindPackagesByIdAsyncCore>d__25.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Microsoft.Dnx.Tooling.RemoteWalkProvider.<FindLibrary>d__6.MoveNext()
...
at Microsoft.Dnx.Tooling.RestoreCommand.<Execute>d__68.MoveNext()
работает нормально, поэтому прокси для curl настроен правильно (/etc/environment содержит определения http_proxy="...")
У меня нигде нет настроенных учетных данных веб-прокси, поэтому неясно, почему nuget или RestoreCommand настраивают завиток с недопустимыми «пустыми» учетными данными.
Если nuget оставит учетные данные, null curl должен работать нормально, как и в командной строке, поскольку SetProxyOptions() отлично обрабатывает этот случай:
NetworkCredential credential = CurlHandler.GetCredentials(this._handler.Proxy.Credentials, this._requestMessage.RequestUri).get_Key();
if (credential != null)