2010-04-09 57 views

回答

5

HttpListenerRequest有一個屬性IsLocal它也應提供此信息。但是,它在我的電腦上返回false。反映到源代碼,看來,這是因爲IsLocal屬性使用代碼:

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

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

時,或許應該在(無法訪問)InternalIsLocal屬性是使用代碼(對於我的情況,這個表達式返回true)。使用這種方法可能更可取,以便您的代碼在轉換到IPv6時不依賴於IPv4地址。

+0

僅基於您的文本,例如,當您通過外部IP地址訪問您自己的計算機時,似乎「IsLocal」返回true,例如, '192.168.1.130'。 – jpaugh 2015-11-24 20:39:53

+2

實際上,我不確定'IsLocal'是否會返回true。由於'IpAddress'類不會重載'=='運算符,所以'IsLocal'屬性正在做引用相等性,這可能總是返回false,而不可訪問的'InternalIsLocal'做值相等性,在適當的時候應該返回true。我假設當通過外部IP地址訪問您的機器時,值相等版本將返回true。 – erdomke 2015-11-24 22:41:32

+0

InternalIsLocal不可訪問,至少不適合我。所以我使用req.LocalEndPoint.Address.Equals(req.RemoteEndPoint.Address,其中req是我的HttpListenerRequest。 – 2018-02-03 23:32:51