programing

HttpContext가 있는 웹 메서드입니다.현재의.사용자. 신원.Azure에서 비활성화 후 인증된 작업 중지

telebox 2023. 6. 1. 22:39
반응형

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

반응형