2012-05-17 4 views
1

J'ai reçu cette erreur lorsque j'ai tenté d'analyser une adresse IP sous forme de chaîne. J'utilisais une adresse IP DNS publique (4.2.2.2) en la testant (en utilisant la méthode IPAddress.Parse de System.Net).C# L'opération tentée n'est pas prise en charge pour le type d'objet référencé

Il effectue correctement l'analyse et renvoie un objet IPAddress. Cependant, si j'essaie d'accéder à la propriété ScopeId de cet objet, une exception SocketException est lancée avec le message indiqué dans le titre.

Je ne suis vraiment pas capable de comprendre quel est le problème ici. Lorsque j'ai vérifié la documentation de la propriété IPAddress.ScopeId, il indique qu'une exception est levée lorsque AddressFamily = InterNetwork, ce qui est le cas avec mon exemple.

Quelqu'un pourrait-il expliquer la raison pour cela?

Répondre

7

ScopeID est un champ spécifique IPv6. Vous avez une adresse IPv4. Par conséquent, une exception est soulevée. InterNetwork dans ce cas signifie IPv4.

+0

Très bien, alors comment est-ce que j'analyse une adresse IPv4 en utilisant cette méthode? –

+0

Il ne suffit pas d'interroger le ScopeID. 'IPAddress ip = IPAddress.Parse (" 4.2.2.2 ");' – Nick

+0

ok, le problème réel est que j'ai utilisé une propriété de type IPAddress pour une entité dans EntityFramework, donc quand j'appelle context.SaveChanges() il essaie de interroger ScopeId et donc lancer l'exception. Ainsi, dites-vous qu'une propriété de type IPAddress ne peut pas être utilisée dans la classe d'entité de EF? –

Questions connexes