2010-12-16 1 views
0

좋아,이 질문은 약간 어리석은 소리입니다. 나는 그것에 대한 다른 질문들을 살펴 봤는데 나는 올바른 답을 찾더라도 일관성없는 결과를 얻고있다. 나는 내가 할 수있는 것처럼 평평하게하려고 노력할 것이다.ASP.NET (MVC)의 DNS를 호스트 이름/프록시로 해결

내 사이트 방문자가 많은 경우 문제가 발생합니다 ... 자주 사용되는 용어 인 인터넷 서비스 (AOL)를 사용하여 액세스합니다. 이것은 내 통제 범위를 벗어납니다. 그것은 userbase의 큰 부분이며 IE에서 파생 된 내장 브라우저를 사용하는 것을 막을 수는 없습니다.

이제는 상속 문제가 아닙니다. 문제는 브라우저를 통해 액세스하는 모든 사이트가 프록시 중 하나를 통과한다는 것입니다. 이것은 어떤 갈등도 야기하지 않지만 우리는 누가 어떤 분명한 이유인지 알 필요가 있습니다.

"Invision Power Board"라는 인기있는 게시판 시스템이 설치되어 있습니다. 사람들의 IP 주소를 추적하며 IP를 해결하는 기능이 있습니다. 따라서 IP를 클릭하면 다음과 같은 호스트로 '해결'됩니다.

XX.XXX.XX.XXXcache-dtc-ae16.proxy.aol.com으로 해결됩니다.

지금 여기서 어떤 일이 벌어지고 있는지 이해합니다. cache-dtc-ae16.proxy.aol.com은 프록시이므로 많은 부분을 할 수 없습니다. 나는 그것에 동의했다. 이 작업을 수행하는 코드는 IPB에 있으며 PHP는 말할 수 없으므로 해당 부서의 SOL입니다.

사용자의 IP 주소를 얻는 방법을 알고 있습니다.

HttpContext.Request.UserHostAddress 

내가 알고 싶은 것은 ... IP에서 어떻게 C에서 그 프록시를 해결할 수 있습니까? 나는 기본적으로 .aol을 가진 프록시로부터 어떤 것도 거부하는 코드의 특정 부분을 설정하기를 원한다. 그 안에.

내가 의미하는 바는 실현 가능하거나 가능합니까? 용어가 완전히 누락되었을 수 있습니다. I 나는 이것을 많이 이해한다.

UserHostAddress is the **client's** IP Address 

다음은 기본적으로 시도한 것입니다.

System.Net.Dns.GetHostEntry(System.Net.IPAddress.Parse(HttpContext.Request.UserHostAddress)).Aliases 

답변

2

를 시도?당신의 대답은 here

IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103"); 
string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net" 
0

이것은 TCP 프로토콜의 제한 사항입니다. 주소는 TCP 패킷의 일부이며, 라우터와 스위치, NAT 및 프록시는 주소를 변경하고 자신의 주소를 넣습니다.

내가 아는 한, 그 주위에는 방법이 없습니다. 프록시의 주소는 당신이 얻는만큼 좋습니다.

심지어 TCP 패킷의 MAC (실제) 주소가 프록시가 될 것이라고 생각합니다.하지만 요청이 여러 TCP 패킷으로 올 수 있기 때문에 ASP.NET 런타임에서 가져올 수 있는지 확실하지는 않습니다.

+0

저를 용서이 질문에 같은 가 보이는, 내가 신참 프로그래머 오전 (아직 IOC의/DI/ORM에 갇혀, 그 작업) 네트워킹의 작은 알고있다. 나는 네가하는 말을 정확히 이해하지 못한다. '지체'하는 말로 번역 할 수 있습니까? – Ciel

+0

글쎄, 당신이하고있는 일은 정확하지만, ** (나는 다른 사람이 있고 해결책을 알고 싶다.) **을 알지 못하기 때문에 조금 쓸모가 없다. ** 어떤 의미인지 절대 확실성으로, 당신은 사용자의 주소. 그냥'HttpContext.Request.UserHostAddress'를 사용하십시오. 그리고 좋은 결과를 얻습니다 - 나는 두렵습니다. 다른 사람들이 논평 할 때까지 기다려 봅시다. 어쩌면 그들이 방법을 알 수 있습니다. – Aliostad

+0

어쨌든, IPB 소프트웨어는 그것을 할 수 있기 때문에, 그것이 가능하다는 것을 나는 알고있다. 난 그냥 C#에서 할 방법을 모르겠다 .... – Ciel