我做什么我從與 .NET Core ASP 服務器位于同一 IPv4 本地網絡上的遠程客戶端發出 HTTP 請求。該服務器配置為AuthenticationHandler通過 訪問遠程 IP 地址的子類驗證請求Context.Connection.RemoteIPAddress。我的期望當應用程序在 Unixy 系統上運行時,Context.Connection.RemoteIPAddress返回IPAddress表示為預期的“192.168.1.12”的值。會發生什么當應用程序在 Windows 系統上運行時,Context.Connection.RemoteIPAddress返回IPAddress表示為“::ffff:192.168.1.12”的值。問題我想將 的返回值RemoteIPAddress與另一個IPAddress值進行比較,但該值表示為簡單的“192.168.1.12”。因此,盡管兩個地址相同(或應該相同?。?,但它們比較起來不相等。非解決方案這是一個僅支持 IPv4 的網絡,因此嘗試阻止 IPv6 流量是沒有意義的。我也不想進行某種模糊字符串比較;盡管它可以工作并且我看不出有任何問題,但我有一種感覺,那里有更好的解決方案。問題我可以看到兩種可能的解決方案,但我不確定如何實現它們:可能有一種方法可以確保以RemoteIPAddress我期望的 IPv4 形式返回遠程 IP 地址??赡苁冀K將所有 IP 地址轉換為這種人造 IPv6 格式,并且如果該轉換是冪等的,則在比較之前標準化所有 IP 地址將是一種合理的方法。我將如何處理這些解決方案?客觀上,其中一個比另一個更好嗎?(這應該是一個允許的問題,因為我不是在征求個人意見?。?
1 回答

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
事實證明,選項 2 非常簡單:只需.MapToIPv6()
在比較之前在兩個地址上運行即可。我認為這可能是最好的解決方案,原因很簡單,當/如果這也與 IPv6 地址一起使用時,它顯然不會導致任何問題!
- 1 回答
- 0 關注
- 95 瀏覽
添加回答
舉報
0/150
提交
取消