This is the code of CheckSchemeName method.
public static bool CheckSchemeName(string schemeName)
{
if (schemeName == null || schemeName.Length == 0 || !Uri.IsAsciiLetter(schemeName[0]))
return false;
for (int index = schemeName.Length - 1; index > 0; --index)
{
if (!Uri.IsAsciiLetterOrDigit(schemeName[index]) && schemeName[index] != '+' && (schemeName[index] != '-' && schemeName[index] != '.'))
return false;
}
return true;
}
From the remarks section of Uri.CheckSchemeName:
The scheme name must begin with a letter and must contain only
letters, digits, and the characters ".", "+", or "-".
So as you can see, this method only checks if the string you are passing meets these requirements.
If you only want to check if the string starts with "http://" and append it in case it is not there, one of the possible solutions would be:
if (!link.StartsWith("http://"))
{
link = "http://" + link;
}
Otherwise I recommend reading this.