2013-04-29 1 views
-2

브라우저 버전을 클라이언트 측에서 검색하려고하면 약간 혼란 스럽습니다. 두 가지 방법을 사용하여이를 검사하고 테스트 목적으로 결과를 비교합니다. I 로컬 dev에 기계와 IE 10 웹 브라우저에서보기보다 VS2012 개발 서버에 내장 된 사용하십시오클라이언트 측 브라우저 버전 ASP.NET withouth 호환성보기 사용 가능

  1. HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
  2. System.Web.HttpBrowserCapabilities browser = HttpContext.Current.Request.Browser; string version = browser.Version;

이 결과는 (클라이언트 결과에 대한 진실이 무엇인지) :

  1. 브라우저는 다음과 같습니다 IE 10.0
  2. 모질라/5.0 (호환; MSIE 10.0; 윈도우 NT 6.1; W OW64; 트라이던트/6.0)

내가 프로덕션 서버 (업로드 7.5 윈도우 2008 R2)와 같은 클라이언트의 웹 브라우저에서 열려 (IE 10) 또는 IE 9 다른 클라이언트를 사용하여, 8 브라우저가 결과는 다음과 같다 IIS (무슨 일이 각 클라이언트가 다른 브라우저가 사실이 아니다) :

  1. 7.0
  2. 모질라/4.0 (호환; MSIE 7.0; 윈도우 NT 6.1; WOW64; 삼지창/6.0 SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729, .NET CLR 3.0.30729, Media Center PC 6.0, .NET 4.0C, InfoPath.3, .NET4.0E)

위의 코드를 C#에서 사용하면 클라이언트 측 브라우저 버전이 서버가 아닌 것으로 가정 할 수 있습니다.

+1

BTW, 프로덕션 서버를 탐색 할 때 호환성보기가 활성화되어 있는지 확인해 보았습니까? (와이어트의 답변과 유사하지만 잠재적으로 다른 해결책, 즉 호환성보기 사용 안 함). –

+0

@TimMedora - 네 말이 맞아. IE 8,9,10처럼 기본적으로 인트라넷에 대한 호환성보기가 활성화되어있어 사용자 에이전트가 각 사용자에 대해 IE 7.0을 표시하도록합니다. 나는 체크 박스를 비활성화하고 매력처럼 일했습니다. 기본적으로 인터넷 사이트에 대한 설정은 비활성화되어 있으므로 아무런 문제가 없습니다. 당신의 의견에 감사드립니다. – laspalmos

답변

3

IE는 일부 로컬 인트라넷 주소의 경우 기본적으로 레거시 모드로 설정됩니다. IE는 서버에 IE7처럼 보이도록 꾸밀 수 있습니다.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />을 페이지에 추가하여 도움이되는지 확인하십시오.

+0

감사합니다. 이것은 아직 작동하지 않았다. 나는 HTM5 doctype을 사용하고 있기 때문에 당신이 제공 한 팁에 대한 더 많은 연구를 할 필요가있다. 왜 이것이 올바르게 보이지 않는지 확신하지 못했습니다. HTML 4.01 doctype 오순절 같은 결과가 있었고 http://msdn.microsoft.com/en-us/library/ie/jj676915(v=vs.85).aspx에 따라 프로덕션 서버에서 IE = edge를 사용해서는 안됩니다. – laspalmos

+0

IE가 전달하는 것으로 생각하는 doctype을보고 있는지 확인하십시오. 이는 정말 까다 롭습니다. 프로덕션 환경에서 이것을 사용하지 않는 것에 관해서는 클라이언트 측을 어떻게 구축하는지에 달려 있다고 생각합니다. IE의 레거시 버전을 다루는 것보다 모든 것을 최신 표준 모드로 강제 할 것입니다. 사실, 우리는 기본적으로 IE의 레거시 버전을 다루는 것을 그만 두었습니다. IE-EDGE는 나를위한 것입니다. YMMV. –

+0

Yours 팁과이 [link] (http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx)는 문제 해결 방법을 도왔습니다. 저는 Nuget을 사용하여 asp.net에서 최신 브라우저 서명을 모두 유지하는 App_Browser 패키지를 추가했습니다. 4.0 호환 모드를 해제하고 다시 활성화 할 필요가 없습니다. – laspalmos

관련 문제