2010-04-09 2 views

답변

5

HttpListenerRequest은이 정보도 제공해야하는 IsLocal 속성을 가지고 있습니다. 그러나, 그것은 내 컴퓨터에 false를 반환하고 있습니다.

return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address); 

: 아마 인 (액세스) InternalIsLocal 속성에 코드를 사용해야 할 때

return this.LocalEndPoint.Address == this.RemoteEndPoint.Address; 

: 소스 코드에 반영,이는 IsLocal 속성이 코드를 사용하기 때문에 나타납니다 (이 표현은 내 상황에 대해 true을 반환합니다.) 이 접근 방식을 사용하면 코드가 IPv6로 전환 될 때 IPv4 주소에 종속되지 않도록하는 것이 좋습니다.

+0

텍스트만으로는 'IsLocal'은 예를 들어 외부 IP 주소를 통해 자신의 컴퓨터에 액세스 할 때 true를 반환합니다. '192.168.1.130'. – jpaugh

+2

실제로, IsLocal이 참을 리턴 할 지 확신 할 수 없습니다. 'IpAddress' 클래스가'=='연산자를 오버로드하지 않기 때문에, IsLocal 프라퍼티는 항상 참을 반환하는 참조 평등을하고 있습니다. 반면에 접근 불가능한'InternalIsLocal'은 적절한 값을 true로 반환해야합니다. 값 평등 버전은 외부 IP 주소를 통해 컴퓨터에 액세스 할 때 true를 반환한다고 가정합니다. – erdomke

+0

최소한 InternalIsLocal에 액세스 할 수는 없습니다. 그래서 req.LocalEndPoint.Address.Equals (req.RemoteEndPoint.Address req는 내 HttpListenerRequest입니다.) –

관련 문제