HttpContext가 있는 웹 메서드입니다.현재의.사용자. 신원.Azure에서 비활성화 후 인증된 작업 중지
Ajax(json)/Webmethod 기능을 사용하는 페이지로 Azure 서버를 테스트하고 있습니다.
이러한 기능 중 일부는 확인합니다.HttpContext.Current.User.Identity.IsAuthenticated그들이 코드를 실행하기 전에.유감스럽게도 사용자가 로그인한 상태에서 페이지가 서버에 전체 포스트백 요청을 하지 않는 경우, 확인하는 웹 메서드만 작동합니다.HttpContext.Current.User.Identity.IsAuthenticated오류 없이 몇 분 후에 실행을 완전히 중지합니다.그들은 심지어 운영하지도 않습니다.else코드 블록(아래 참조).
저는 로컬 서버에서 해당 페이지를 테스트해 보았는데, 오랜 시간 동안 사용하지 않았더라도 정상적으로 작동했습니다.다음은 웹 방법의 예입니다.
[WebMethod]
public static string serviceMenu(int IDservice)
{
StringBuilder SBphotoMenu = new StringBuilder();
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// Do stuff
}
else
{
// Do other stuff
}
return SBphotoMenu.ToString();
}
다음과 같이 웹 메소드를 호출합니다.
function serviceMenu(IDservice) {
$.ajax({
type: "POST",
url: "/UserControls/serviceMenu",
data: "{ IDservice: " + IDservice }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
// Do Stuff
}
})
}
이 동작은 사용자가 로그인한 경우에만 발생합니다.이제 사용자가 로그인하지 않으면 Azure에서도 모든 기능이 제대로 작동합니다.
실제로 웹 메소드 실행이 중지되고 페이지를 새로 고치면 사용자가 로그인한 상태에서 웹 메소드가 다시 실행되기 시작하지만 몇 분 동안만 동일한 동작이 다시 발생합니다.
뭐가 잘못됐어요?
이 문제는 인증이 아닌 세션 변수로 인해 발생합니다.실제로 Azure의 ASP.NET 응용프로그램에 대해 기본 "inProc" 메서드를 사용하여 세션 상태가 유지되지 않습니다.Azure는 다른 방법을 사용하며, 그 중 일부는 비용이 많이 듭니다.테이블 저장소, SQL Azure 또는 윈도우즈 Azure 캐싱.
언급URL : https://stackoverflow.com/questions/30285413/webmethods-with-httpcontext-current-user-identity-isauthenticated-stop-working-a
'programing' 카테고리의 다른 글
| iOS UITableView 머리글 보기 추가(섹션 머리글이 아님) (0) | 2023.06.01 |
|---|---|
| Mac OS X에서 정적 라이브러리(.a)의 대상 아키텍처를 어떻게 결정합니까? (0) | 2023.06.01 |
| Android Emulator에서 내 http://localhost 웹 서버에 연결하는 방법 (0) | 2023.06.01 |
| Apple 개발자 프로그램이나 탈옥 없이 기기에서 iOS 앱 테스트 (0) | 2023.05.27 |
| 웹 드라이버를 사용하여 요소로 스크롤하시겠습니까? (0) | 2023.05.27 |