programing

요청이 ajax인지 아닌지 확인하는 방법 뒤의 코드 - ASPNET 웹폼

bestprogram 2023. 10. 29. 19:52

요청이 ajax인지 아닌지 확인하는 방법 뒤의 코드 - ASPNET 웹폼

해봤습니다.Request.IsAjaxRequest그러나 이는 WebForms에는 존재하지 않습니다.저는 JQuery ajax 전화를 걸고 있습니다.이것이 C#에서 ajax 요청인지 아닌지 확인하려면 어떻게 해야 합니까?

당신은 MVC 코드에 있는 것과 같이 당신만의 확장 방법을 만들 수 있습니다.

예.

public static bool IsAjaxRequest(this HttpRequest request)
{
    if (request == null)
    {
        throw new ArgumentNullException("request");
    }

    return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"));
}

HTHs,
찰스

편집: 사실 콜백 요청도 아약스 요청이지만,

    public static bool IsAjaxRequest(this HttpRequest request)
    {
        if (request == null)
        {
            throw new ArgumentNullException("request");
        }
        var context = HttpContext.Current;
        var isCallbackRequest = false;// callback requests are ajax requests
        if (context != null && context.CurrentHandler != null && context.CurrentHandler is System.Web.UI.Page)
        {
            isCallbackRequest = ((System.Web.UI.Page)context.CurrentHandler).IsCallback;
        }
        return isCallbackRequest || (request["X-Requested-With"] == "XMLHttpRequest") || (request.Headers["X-Requested-With"] == "XMLHttpRequest");
    }

ScriptManager가 InSyncPostBack인지 확인해 봅니다.

ScriptManager.GetCurrent(Page).IsInAsyncPostBack

일반적으로, 당신은 다음에 대한 테스트가 필요할 것입니다.X-Requested-With헤더의 값이 'XMLHtpRequest'인지 확인합니다.저는 아직 C# 개발자는 아니지만, 빠른 구글 검색 결과 C#에서는 다음과 같은 일이 일어난다고 합니다.

Request.Headers["X-Requested-With"] == "XMLHttpRequest";

네.Request.IsAjaxRequest에 대한 헤더 및 쿼리 문자열을 봅니다.X-Requested-With, 하지만 당신의 잡동사니가 그들을 보내지 않는 것 같습니다.X-Requested-With머리말

Fiddler를 사용하여 어떤 헤더를 보내고 있는지 확인하거나 아니면 POST URL을 다음으로 설정하여 쿼리 문자열로 보낼 수 있습니다.

/whatever.aspx?x-requested-with=XMLHttpRequest

사용하는 확장자를 만들었습니다.

internal static bool IsAjaxRequest(this HttpRequestMessage request)
{
    return request != null && request.Headers.Any(h => h.Key.Equals("X-Requested-With", StringComparison.CurrentCultureIgnoreCase) &&
        h.Value.Any(v => v.Equals("XMLHttpRequest", StringComparison.CurrentCultureIgnoreCase)));
}

다음으로 수업 꾸미기로 장식하기[WebMethod(EnableSession = true)]만약 당신이 코드 뒤에 다음 함수를 쓰고 ajax call에서 같은 함수를 호출한다면 당신은 확신할 것입니다.

[WebMethod(EnableSession = true)]
    public static void   getData(string JSONFirstData,string JSONSecondData, string JSONThirdData, string JSONForthData, ...)
    {
       //code
    }

Ajax에서 URL은 다음과 같습니다.URL :'/Codebehind.aspx/getData'

언급URL : https://stackoverflow.com/questions/4392836/how-to-check-if-request-is-ajax-or-not-in-codebehind-asp-net-webforms