¿Cómo pasar el parámetro de Ajax a C# usando la solicitud de encabezado?

Tengo la siguiente solicitud:

var response = $.ajax({
    type: "POST",
    contentType: "application/x-www-form-urlencoded",
    url: this.AgentServiceUrl + "/" + methodName,
    data: data,
    async: this.Async,
    success: function (xml, textStatus) { if (successHandler != null) successHandler(state, $.xml2json(xml), textStatus); },
    error: function (xmlHttpRequest, textStatus, errorThrown) { if (errorHandler != null) errorHandler(state, xmlHttpRequest, textStatus, errorThrown); }
});

Quiero agregar una variable a este encabezado de solicitud y consumirla en C#,

Intento de muchas maneras pero no puedo consumirlo en C#:

  1.  beforeSend: function (req)  
     {  
         req.setRequestHeader("AgentGUID", this.AgentGUID);  
     },
    
  2. Pasar parameters:

¿Me puedes ayudar? No quiero cambiar la función en la parte de C#, solo quiero usar algo como:

(System.Web.HttpContext.Current.Request.Headers["someHeader"]

preguntado el 01 de julio de 12 a las 13:07

1 Respuestas

Tus beforeSend debería funcionar como desea, pero la razón por la que no obtiene el valor en el lado del servidor es que this.AgentGUID en esta llamada de método es undefined porque this en ese contexto apunta a otro objeto (muy probablemente objeto de solicitud ajax).

Al definir una variable fuera de su llamada ajax, su problema se solucionará.

var me = this;
var response = $.ajax({
    ...
    beforeSend: function (req)
    {
        req.setRequestHeader("AgentGUID", me.AgentGUID);
    },
    ...
});

Respondido 01 Jul 12, 13:07

Su código del lado del servidor (código c#) es correcto. simplemente use la tecla "AgentGUID" para obtener su valor. - Mo Valipur

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.