2014-01-30 3 views
3

Windows 서버에서 asp.net 웹 API 응용 프로그램을 실행 중입니다. 다른 IP 주소가있는 2 개의 사이트가 있습니다. 응용 프로그램이 IsLocal이 true 인 사이트 중 하나에 배포되면 다른 사이트에 배포 할 때 false입니다.HttpRequestMessage.IsLocal() 한 사이트에서 거짓 동일한 서버에있는 다른 서버에있는 거짓

소스 코드를 확인,이 귀결 :

[DllImport("aspnet_state.exe", CharSet=CharSet.Ansi)] 
    internal static extern void STWNDGetLocalAddress(IntPtr tracker, StringBuilder buf); 

이는 왜 두 번째 IP는 유효한 로컬 주소를 반환하는 방법은 아닙니다입니까? 이

enter image description here

가 어떻게이 IsLocal 두 번째 IP를 고려합니까합니다 (0.79 IP 주소가 IsLocal은 false를 반환하는 일이다)과 같은 네트워크 설정이 보인다? 세 가지 조건 중 하나에 진정한

+0

이 질문에 대한 답을 찾을 수는 없지만. 귀하의 필요를 충족시키기위한 해결 방법이 있습니다. //http : //www.strathweb.com/2013/01/adding-request-islocal-to-asp-net-web-api/ – RCkumar

+0

그 모습은 멋지지만 그 해결책은 STWNDGetLocalAddress 역시 .79 주소를 전달하지 않을 것이라고 가정합니다. –

+0

당신은 @http : //stackoverflow.com/questions/11849501/how-to-filter-local-requests-in-asp-net-web-api를 보았습니까? 그냥 제안. 이미 통과했다면 – RCkumar

답변

3

IsLocal 반환 :

  • 요청은
  • 요청이 로컬 호스트에서 온 127.0.0.1에서 온
  • 요청이 서버 IP와 동일한 IP에서 나온

첫 번째 단계는 들어오는 요청의 IP를 로그 아웃하여 웹 API가 소스라고 생각할 수 있는지 확인하는 것입니다.

+0

을 건너 뛰십시오. 로컬 호스트가 아니며 127.0.0.1이 아닙니다. 그러나 ip-address는 서버의 adpter에 할당됩니다. 그런데 왜 그 지역이 아닌지. 더 많은 컨텍스트를 얻기 위해 일부 로깅을 추가 할 것입니다. 서버에 둘 이상의 ip 주소가있는 경우 "서버 ip"는 무엇입니까? –

관련 문제