2013-07-19 2 views
0

내 ASP.NET 사이트를 모바일 장치에서 탐색 할 때 명백한 이유없이 FormsAuthentication.CookiesSupported 속성에서 false를 반환하는 경우가 있습니다. 예를 들어, 모바일 Safari에서 ASP.NET 로그인 페이지를 열고 FormsAuthentication.CookiesSupported가 true입니다. 일정 기간 동안 사용하지 않으면이 페이지가 새로 고쳐지고 이제 FormsAuthentication.CookiesSupported는 false입니다. 현재 모바일 Chrome 또는 Dolphin에서 동일한 페이지가 열리고 CookiesSupported는 모두 마찬가지입니다. 그런 다음 IIS를 다시 시작하고 경우에 따라서는 CookiesSupported가 참이되며 때때로 모든 브라우저에서 여전히 거짓 인 경우가 있습니다. 다시 한 번, 얼마 후 사실이 될 수 있습니다. 쿠키 지원은 모든 브라우저 구성에서 항상 켜져 있습니다.ASP.NET 모바일 브라우저에서 FormsAuthentication.CookiesSupported가 false를 반환하는 경우

CookiesSupported가 false이고 FormsAuthentication.SetAuthCookie 함수를 호출하는 경우 ASP.NET은 인증 티켓에 URI를 사용합니다. 나는 그걸로 살 수 있지만, 변경된 URI는 또 다른 문제를 일으킨다. 문제는 WebResource.axd가 작동을 멈추는 것입니다. asp : LinkButton은 렌더링 될 때 auth 쿠키가 URI에 추가되는 경우 정의되지 않은 WebForm_DoPostBackWithOptions를 호출합니다. 고정 할 수 있습니다 이유는 간헐적으로 FormsAuthentication.CookiesSupported 않습니다

  1. 가 모바일 브라우저 (사파리, 크롬, 돌핀) 방법이 false를 반환 :

    그래서 기본적으로, 나는이 개 질문이?

  2. 인증 쿠키를 URI에 삽입 할 때 WebResource.axd가 작동을 멈추는 이유는 무엇입니까?

답변

1

이것은 asp.net의 브라우저 기능과 관련된 문제인 것으로 보입니다. 사용자 에이전트 문자열을 사용하여 브라우저를 식별하고이를 일치시켜 기능을 판별합니다. 프레임 워크에는 IOS 및 기타 최신 모바일 기반 브라우저에 대한 충분한 정보가 없습니다. 나는 이것이 ASP.Net v4.5로 수정되었다고 생각한다.

한편 당신은 모든 (일반) 브라우저가 쿠키를 지원하는 ASP.Net에게이 해결 방법을 사용할 수 있습니다

프로젝트 "App_Browsers"에서 특정 폴더를 추가합니다. 이 폴더 내에 "generic.browser"이라는 파일을 만듭니다. 이 파일에 다음 텍스트를 붙여 넣습니다 드디어 모바일 브라우저에서 동일한 문제가 발생할 수 있습니다 사람들을 위해 여기에 완벽한 솔루션을 게시 할 수 있습니다

<browsers> 
    <browser refID="Mozilla"> 
     <capabilities> 
      <capability name="xml" value="true" /> 
      <capability name="cookies" value="true" /> 
     </capabilities> 
    </browser> 
</browsers> 
+0

의견을 보내 주시면 감사하겠습니다. 쿠키없는 모드로 인해 WebResource.axd가 제대로 작동하지 않는 이유는 무엇입니까? – demalex

+0

나는 내 프로젝트에서 쿡리스를 사용한 적이 없다고 말할 수 없다. 쿠키리스는 url을 사용하여 세션 id를 채우고 webresource.axd는 url에 querystrings을 넣습니다. 거기에 문제가있을 수 있습니다. – Abhitalks

+0

그리고 위의'refID'는 반드시 모질라''가 될 필요는 없습니다. 이전 프로젝트 중 하나에서 가져 왔습니다.Scott Hanselman은''GenericDownLevel ''을 사용할 것을 권장합니다. 그러나 흥미롭게도 모든 문자열이 작동합니다 (심지어 "ㅋㅋ")! 파일 이름''generic.browser ''는 모든 일반 브라우저에서 작동합니다. – Abhitalks

0

.

따라서 에 따르면 abhitalks 님의 답변은 내 프로젝트에 generic.browser 파일을 추가하려고 시도했으며 이로 인해 쿠키의 첫 번째 문제가 해결되었습니다. 그러나 WebResource.axd와 WebForm_DoPostBackWithOptions 자바 스크립트 코드가없는 문제는 여전히있었습니다. 이 문제는 모바일 브라우저의 경우에도 항상 "상위 레벨"브라우저를 다루는 프레임 워크를 통해 해결되었습니다. 페이지의 PreInit 이벤트에서 수행되었습니다.

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit 
     Page.ClientTarget = "uplevel" 
End Sub 

이제 모바일 버전은 테스트 한 모든 모바일 브라우저에서 정상적으로 작동합니다.

관련 문제