2014-07-18 3 views
1

은 내가 2 개 IP 주소 (서비스가 시작될 때) 다음과 같은 방법 사이에 비교하는 오래된 서비스가 원인 2003 서버에 설치했지만 지금은 2008 서브 서버에 설치하려고하면 다음 예외가 발생합니다.는 사용 IPAddress.Address 예외

서비스를 시작할 수 없습니다. System.Net.Sockets.SocketException 다음 시도한 작업이 System.Net.IPAddress.get_Address에서 을 참조 된 개체의 유형()이 지원되지 않습니다

(이상한 것은입니다 설치하고 시작하려고 할 때 클라이언트 2008 서버에서 작동).

무엇이 문제입니까?

+3

당신은 IPv6 주소를 얻고을 사용하는 것이 좋습니다하지만. [원본] (http://referencesource.microsoft.com/#System/net/System/Net/IPAddress.cs)을 확인하고 컴파일러에서 'Address'가 더 이상 사용되지 않는다는 경고를 무시하지 마십시오. –

답변

5

문서에 따르면 Address 속성은 현재 사용되지 않습니다. 대신 GetAddressBytes을 사용하는 것이 좋습니다. 비교를 위해

이 문서는 Equals

if (IPAddress1.Equals(IPAddress2)) 
{ 
    ... 
} 
+2

권장 사항은 어디입니까? http://msdn.microsoft.com/en-GB/library/system.net.ipaddress.address.aspx는'IPAddress.Equals'의 사용을 제안하는 것으로 보입니다 ... – Chris

+0

@Chris'이곳은 쓸모가 없습니다. . GetAddressBytes.'를 사용하십시오. 그러나, 방금 사용 중지 메시지 ('byte [] '비교를 할 가능성이 높습니다)에서'Equals'를 권장한다는 것을 깨달았습니다. – James

+0

오 예. 그건 꽤 일치하지 않습니다. 나는 당신이 실제로 주소를 비교하지 않을지도 모르기 때문에 너의 것이 더 이치에 맞다고 생각한다. 그래서 평등은 항상 의미가 없을 것이다. 그러나 설명을 가져 주셔서 감사합니다. – Chris