Ответ 1
Это ошибка в .NET Framework. Вы можете открыть билет на MicrosoftConnect.
Исключение будет выражено в этом методе
void Systen.Uri.CreateUriInfo(System.Uri.Flags cF)
в строке 2290 (проверьте справочный источник), выполнив следующую инструкцию:
// This is NOT an ImplicitFile uri
idx = (ushort)m_Syntax.SchemeName.Length;
В это время объект m_Syntax
будет null
, потому что во время разбора он будет отброшен.
Метод
void InitializeUri(ParsingError err, UriKind uriKind, out UriFormatException e)
if (m_Syntax.IsSimple)
{
if ((err = PrivateParseMinimal()) != ParsingError.None)
{
if (uriKind != UriKind.Absolute && err <= ParsingError.LastRelativeUriOkErrIndex)
{
// RFC 3986 Section 5.4.2 - http:(relativeUri) may be considered a valid relative Uri.
m_Syntax = null; // convert to relative uri
e = null;
m_Flags &= Flags.UserEscaped; // the only flag that makes sense for a relative uri
}
// ...
}
// ...
}
Метод PrivateParseMinimal()
возвращает ParsingError.BadAuthority
и uriKind == UriKind.RelativeOrAbsolute
по вашей спецификации.
Метод PrivateParseMinimal()
ищет любую из следующих последовательностей символов: "//", "\", "/\", "/". И поскольку в вашей строке ввода нет таких последовательностей, возвращается код ParsingError.BadAuthority
.