Der beste Weg, um zu bestimmen, ob ein Domain-Name ein gültiger in einer Datei „hosts“ wäre?

StackOverflow https://stackoverflow.com/questions/967516

Frage

Der Windows Hosts-Datei Sie eine IP auf eine Hostname , die weit größere Freiheit als ein normaler Internet-Domain-Name hat. Ich mag eine Funktion erstellen, wenn ein bestimmte Name bestimmt würde ein gültiger „Host“ Datei Domain-Name sein.

Basierend auf diese beantworten und Experimentieren, was funktioniert und was nicht, ich kam mit dieser Funktion auf:

private static bool IsValidDomainName(string domain)
{
    if (String.IsNullOrEmpty(domain) || domain.Length > 255)
    {
        return false;
    }

    Uri uri;

    if (!Uri.TryCreate("http://" + domain, UriKind.Absolute, out uri))
    {
        return false;
    }

    if (!String.Equals(uri.Host, domain, StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString())
    {
        return false;
    }

    foreach (string part in uri.Host.Split('.'))
    {
        if (part.Length > 63)
        {
            return false;
        }
    }

    return true;
}

Es hat auch den Vorteil, dass es mit Unicode-Namen arbeiten sollte (wo eine grundlegende Regex scheitern würde).

Gibt es eine bessere / elegantere Art und Weise, dies zu tun?

UPDATE : Wie von Bill vorgeschlagen, die

War es hilfreich?

Lösung

Wie über das -System. Uri.CheckHostName () Methode?

private static bool IsValidDomainName(string name)
{
    return Uri.CheckHostName(name) != UriHostNameType.Unknown;
}

Warum arbeiten die selbst?

Andere Tipps

Diese Methoden sind nicht zuverlässig, wie Sie eine Antwort erhalten, auch wenn die Domain-Namen wie „fasdfasdfasd.com“ fake sind.

Der beste Weg ist es, eine WebResponse zu senden und die Antwort von der Domain warten. Hier ist der vollständige Code und Erklärungen dieses Prozesses (Long-Code-Snippet so nicht kopier Einfügen hier).

http://www.dotnetfunda.com/ Artikel / show / 1072 / Validierung-domain-name-in-aspnet

Danke

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top