2011-05-24 4 views
0

Si j'ai un site Web fonctionnant sous www.example.com, mais que quelqu'un y accède par adresse IP. Comment puis-je dans la recherche de code dans IIS que www.example.com est le domaine du site réel?Asp.NET Obtenir le domaine actuel

+2

Une application ASP.NET ne connaît rien à la configuration du conteneur dans lequel elle est hébergée. Pour accéder à la configuration IIS, votre application ASP.NET doit être exécutée avec des privilèges élevés, ce qui est un non-non, sans parler de la mauvaise façon de faire ce que vous essayez de faire. Ce que vous devriez faire est de rediriger toutes les demandes accédant au site par tout autre chose que son nom canonique. Alors vous ne devez pas vous inquiéter à ce sujet. Veuillez décrire plus en détail pourquoi vous ressentez le besoin de le faire. – Chris

+0

Ouais, c'est ce que je pensais. Ceci est pour un problème de licence qui autorise les sites par nom de domaine, mais si quelqu'un frappe le site par adresse IP, il ne peut pas trouver le nom de domaine si la licence échoue. –

+0

Vous allez devoir être plus précis. Ce que vous dites est "Comment puis-je connaître mon nom si quelqu'un dit" Hey you "? Bien sûr, vous connaissez votre nom, et votre site Web devrait également connaître son nom.Votre question n'a pas beaucoup de sens à la surface , à moins qu'il y ait quelque chose de plus que vous ne dites pas –

Répondre

1

Il est impossible de fiable rechercher un domaine à partir d'une adresse IP, car une adresse IP adresse peut être mappé à 0 ou plusieurs noms de domaine.

Le mieux que vous pouvez faire est d'avoir une liste de mappages. Notez qu'il est également possible pour une adresse IP de réseau local et un point IP externe au même emplacement.

En général, une machine spécifique peut être référencée par plusieurs adresses IP, chacune pouvant être référencée par plusieurs domaines. Donc, vous pouvez aller domain > IP address -> machine mais pas l'inverse.

+1

Je pense que vous voulez dire qu'il n'est pas possible de chercher "de façon fiable" un domaine basé sur IP. C'est certainement possible, mais ce n'est peut-être pas le bon nom de domaine, et la plupart des sites n'ont pas de bons enregistrements de reverse DNS de toute façon. –

+0

Pas vrai ... J'ai posté comment le faire, même si ce n'est peut-être pas 100%. – Kelsey

+0

Changé pour dire de manière fiable. – Davy8

1

Etes-vous en train d'essayer d'obtenir l'adresse IP de www.example.com de sorte que vous puissiez le comparer?

Vous pouvez obtenir l'adresse IP de www.example.com en faisant:

System.Net.Dns.GetHostEntry("www.example.com").AddressList[0].ToString(); 

Vous pouvez ensuite comparer les adresses IP pour voir si elles sont les mêmes. A noter également qu'il ya une liste de sorte que vous pouvez vérifier pour voir si elle existe:

bool ipMatch = (System.Net.Dns.GetHostEntry("www.example.com"). 
    AddressList.Where(a => a.ToString().Equals(userIP)).Count() > 0); 

Vous pouvez utiliser Contains mais vous devez construire un objet IPAddress que vous n'avez probablement pas.

EDIT: De votre commentaire, vous avez l'adresse IP et que vous voulez l'adresse hôte donc il suffit de faire:

string hostname = System.Net.Dns.GetHostEntry(yourIPHere).HostName; 
+0

Si j'obtiens le domaine courant d'asp.net quand un utilisateur frappe le site par ip, j'obtiens l'adresse ipaddress, mais ce que je voudrais, c'est le réel Si je reçois http://22.23.25/Default.aspx, j'aimerais savoir que c'est vraiment http://www.bob.com/Default.aspx –

+0

Pourquoi auriez-vous même besoin de regarder? au nom de l'hôte? Vous devriez déjà savoir que vous êtes bob.com La seule fois où vous ne le seriez pas si c'était un nom de domaine configurable par l'utilisateur, comme un CMS ou une autre application générique, auquel cas vous auriez besoin d'une entrée de configuration pour lui indiquer votre nom. –

+0

@Mystere Man J'ai appris à ne jamais demander pourquoi ... tout le monde semble avoir des raisons de faire presque n'importe quoi;) – Kelsey

Questions connexes