Bug 42985 - Failure to parse URL for NuGet repository
Summary: Failure to parse URL for NuGet repository
Status: RESOLVED FIXED
Alias: None
Product: Xamarin Studio
Classification: Desktop
Component: NuGet (show other bugs)
Version: 6.0.0 (C7)
Hardware: Macintosh Mac OS
: --- normal
Target Milestone: master
Assignee: Matt Ward
URL:
Depends on: 43032
Blocks:
  Show dependency tree
 
Reported: 2016-08-02 09:39 UTC by Mikko Tormanen
Modified: 2016-09-27 13:16 UTC (History)
0 users

Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
Screenshot (51.35 KB, image/png)
2016-08-02 09:39 UTC, Mikko Tormanen
Details


Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED FIXED

Description Mikko Tormanen 2016-08-02 09:39:20 UTC
Created attachment 16859 [details]
Screenshot

Description of Problem:
When trying to add our internal NuGet repository to be used in Xamarin, it fails to parse the URL 

Steps to reproduce the problem:
1. Add a NuGet repo in Preferences resembling this URL format: https://somerepo.pkgs.visualstudio.com/_packaging/tps/nuget/v2
2. Load a solution and try to add a packagae to a project from this repo.


Actual Results:
Add Packages window shows an error: "Invalid URI: The hostname could not be parsed."


Expected Results:
All packages from this repo are listed.


How often does this happen? 
Every time.


Additional Information:
Comment 1 Matt Ward 2016-08-02 11:12:35 UTC
1) Can you attach the full IDE information? (About dialog - Show Details)

2) Also can you attach the exception callstack from the IDE log? (Help - Open Log Directory).

You should be able to mark the comment/attachment as private if it contains sensitive information, otherwise remove that information before attaching.

I use a VSTS package source which has a similar url and that seems OK for me:

https://username.pkgs.visualstudio.com/DefaultCollection/_packaging/VSTSTest/nuget/v2
Comment 2 Mikko Tormanen 2016-08-02 12:13:13 UTC
Hi Matt,

Bugzilla won't allow me to set attachments as private. Can you please set these permissions for me? I will then attach the log files.

Thanks in advance,
MikkoT


=== Xamarin Studio Community ===

Version 6.0.2 (build 73)
Installation UUID: 7a8e0fb8-1b19-460c-ab67-8e3e07af1a17
Runtime:
	Mono 4.4.2 (mono-4.4.0-branch-c7sr1/f72fe45) (64-bit)
	GTK+ 2.24.23 (Raleigh theme)

	Package version: 404020011

=== Xamarin.Profiler ===

Not Installed

=== Apple Developer Tools ===

Xcode 7.3.1 (10188.1)
Build 7D1014

=== Xamarin.Mac ===

Not Installed

=== Xamarin.Android ===

Not Installed

=== Xamarin Android Player ===

Not Installed

=== Xamarin.iOS ===

Not Installed

=== Build Information ===

Release ID: 600020073
Git revision: a6f7a24a9723a2d4f5d33c176615b0d44703ab5b
Build date: 2016-07-26 13:36:15-04
Xamarin addins: f5acb37866a0141bc5ddbe95118f18dae4014568
Build lane: monodevelop-lion-cycle7-sr1

=== Operating System ===

Mac OS X 10.11.6
Darwin mikkos-mbp.guest.corp.microsoft.com 15.6.0 Darwin Kernel Version 15.6.0
    Thu Jun 23 18:25:34 PDT 2016
    root:xnu-3248.60.10~1/RELEASE_X86_64 x86_64
Comment 4 Matt Ward 2016-08-02 15:46:43 UTC
VSTS is now using a different url:

Old url style:

https://username.pkgs.visualstudio.com/DefaultCollection/_packaging/VSTSTest/nuget/v2

Newer url style:

https://username.pkgs.visualstudio.com/_packaging/VSTSTest/nuget/v2

The newer url style cannot be used currently. The older style url still works and is the current workaround.

Some initial tests:

1) Xamarin Studio 6.0.2 on Windows is OK.
2) Xamarin Studio 6.0.2, 6.0.1 and 5.10 all fail unless the url includes "DefaultCollection"
3) Xamarin Studio 6.1 is OK

Xamarin Studio 6.1 uses NuGet v3, older versions use NuGet v2, so I am assuming NuGet v3 is using a different way to connect to the url.

The exception callstack:

https://gist.github.com/mrward/5e1dc394580b6d17a7adc3c854ebd6e2

I will run some tests with older versions of Mono to see if this is a regression.
Comment 5 Matt Ward 2016-08-02 17:40:11 UTC
It does not seem to be a regression in Mono. I tried a few versions: 4.4.0, 4.2.2, 4.0.4 and 3.12.0 all of which fail with the same error.
Comment 6 Matt Ward 2016-08-03 16:49:22 UTC
Had some time to look into this a bit further. Created a simple console app that uses NuGet to repro the problem:

https://github.com/mrward/TestNuGetPackagesReader

There are two problems here:

1) VSTS is returning incorrect urls in its results when using a url without DefaultCollection in it:

<feed xml:base="https://_packaging/VSTSTest/nuget/v2">
  <id>http://schemas.datacontract.org/2004/07/</id>
  <title />
  <updated>2016-08-03T15:59:41Z</updated>
  <link rel="self" href="https://_packaging/VSTSTest/nuget/v2/Packages" />
  <entry>
    <id>https://_packaging/VSTSTest/nuget/v2/Packages(Id='Test.This',Version='0.2')</id>

When the DefaultCollection url is used the urls are correct. Which seems to be a VSTS bug.

2) Mono cannot parse urls that start with an underscore.

So the following code will trigger the same exception:

    // Causes 'Invalid URI: The hostname could not be parsed.'
    var uri = new Uri ("https://_foo/bar.html");
   
On Windows the above code works with no exception being thrown.
Comment 7 Matt Ward 2016-09-27 13:16:59 UTC
This seems to be OK with Mono 4.8.0. The VSTS feed is still returning incorrect urls but Mono now parses them without an exception being thrown.