diff --git a/src/Microsoft.OpenApi/Reader/OpenApiJsonReader.cs b/src/Microsoft.OpenApi/Reader/OpenApiJsonReader.cs index b01a5644e..fd17a3643 100644 --- a/src/Microsoft.OpenApi/Reader/OpenApiJsonReader.cs +++ b/src/Microsoft.OpenApi/Reader/OpenApiJsonReader.cs @@ -192,7 +192,8 @@ private JsonNode LoadJsonNodes(TextReader input) private async Task LoadExternalRefs(OpenApiDocument document, CancellationToken cancellationToken, OpenApiReaderSettings settings, string format = null) { // Create workspace for all documents to live in. - var openApiWorkSpace = new OpenApiWorkspace(); + var baseUrl = settings.BaseUrl ?? new Uri(OpenApiConstants.BaseRegistryUri); + var openApiWorkSpace = new OpenApiWorkspace(baseUrl); // Load this root document into the workspace var streamLoader = new DefaultStreamLoader(settings.BaseUrl); diff --git a/src/Microsoft.OpenApi/Reader/Services/DefaultStreamLoader.cs b/src/Microsoft.OpenApi/Reader/Services/DefaultStreamLoader.cs index dba3c6811..7c8888abb 100644 --- a/src/Microsoft.OpenApi/Reader/Services/DefaultStreamLoader.cs +++ b/src/Microsoft.OpenApi/Reader/Services/DefaultStreamLoader.cs @@ -56,7 +56,9 @@ public Stream Load(Uri uri) /// public async Task LoadAsync(Uri uri) { - var absoluteUri = new Uri(baseUrl, uri); + Uri absoluteUri; + absoluteUri = baseUrl.AbsoluteUri.Equals(OpenApiConstants.BaseRegistryUri) ? new Uri(Directory.GetCurrentDirectory() + uri) + : new Uri(baseUrl, uri); switch (absoluteUri.Scheme) {