In my webForm project as follow :
- I have a button which user click on it
- call a web method (via jquery request) to extract some binary data from sql server as pdf
- Then give a user to download/view the pdf via browser.
This works for my development machine. However, this fails on production server and give to user an empty pdf!
Where is my problem & how to solve it?
Here is jquery request to my web method :
function OpenAttachment(jsonData){
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "MedicalHistory.aspx/OpenAttachment",
                data: JSON.stringify({ objData: jsonData }),
                dataType: "json",
                success: function (response) {
                    gdv.PerformCallback('downloadfile|' + response.d);
                },
                error: function (request, status, error) {
                    alert('error : ' + error);
                }
            });
        }
Here is my web method :
[WebMethod]
        public static string OpenAttachment(object objData)
        {
            string strResult = string.Empty;
            if (objData == null)
                return strResult;
            DataTable dtResult = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(objData.ToString());
            string strDocContent = dtResult.Rows[0]["DocContent"].ToString();
            string strFileName = dtResult.Rows[0]["FileName"].ToString();
            byte[] pdfByteArray = Encoding.Default.GetBytes(strDocContent);
            HttpContext.Current.Session["_binDownloadData"] = pdfByteArray;
            strResult = strFileName;
            return strResult;
        }
And here is download code in my download page :
object objDownloadData = Session["_binDownloadData"];
                if (objDownloadData != null)
                {
                    byte[] pdfByteArray = (byte[])objDownloadData;
                    string strContentType = string.Empty;
                    if (strFileType == "pdf")
                    {
                        strContentType = "application/pdf";
                    }
                    #region Downloading file
                    HttpContext.Current.Response.Clear();
                    MemoryStream ms = new MemoryStream(pdfByteArray);
                    HttpContext.Current.Response.ContentType = strContentType;
                    HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", strFileName));
                    HttpContext.Current.Response.Buffer = true;
                    ms.WriteTo(HttpContext.Current.Response.OutputStream);
                    HttpContext.Current.Response.Flush();
                    HttpContext.Current.Response.SuppressContent = true;
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                    #endregion
                    Session["_binDownloadData"] = null;
                }
Thanks in advance.
 
    