Вот фрагмент кода из DiscoveryClient ParseUrl
, показывающий, когда он выдает это исключение:
public static DiscoveryEndpoint ParseUrl(string input)
{
var success = Uri.TryCreate(input, UriKind.Absolute, out var uri);
if (success == false)
{
throw new InvalidOperationException("Malformed URL");
}
if (!DiscoveryEndpoint.IsValidScheme(uri))
{
throw new InvalidOperationException("Malformed URL");
}
Вот код для DiscoveryEndpoint IsValidScheme
метод:
public static bool IsValidScheme(Uri url)
{
if (string.Equals(url.Scheme, "http", StringComparison.OrdinalIgnoreCase) ||
string.Equals(url.Scheme, "https", StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}
Исходя из этого, исключение не генерируется, поскольку URL использует http
.
Попробуйте позвонить
new Uri(_configuration.GetSection("Settings").GetSection("DiscoveryClient").Value, UriKind.Absolute)
перед вызовом IdentityModel.Client.DiscoveryClient.GetAsync ', чтобы увидеть, какое исключение выдается конструктором Uri.