function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sushanto_dodosushanto_dodo 

INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session,.. please help

I have the folllowing code and i get the invalid session Id exception.  How to remove it ? Can someone please assist? I am new to use salesforce metadata API. The line highlighted in RED  is where the exception is raised.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Text;
using WebApplication1.WebReference;
using WebApplication1.SFMetadata;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {

        public const double API_VERSION = 23.0;

        private WebApplication1.WebReference.SforceService sf { get; set; }
        private WebApplication1.WebReference.LoginResult lr { get; set; }
        private GetUserInfoResult userInfo { get; set; }

        private MetadataService metaService { get; set; }
        private List<FileProperties> lstFp { get; set; }
        private RetrieveResult result { get; set; }



        private List<String> lstSObjects = new List<String>();
        private List<CustomField> lstFields = new List<CustomField>();



        // Retrieve all SObjects
        private void retrieveSObjects()
        {
            try
            {
                DescribeGlobalResult dgr = sf.describeGlobal();

                DescribeGlobalSObjectResult[] dgsr = dgr.sobjects;
                foreach (DescribeGlobalSObjectResult d in dgr.sobjects)
                {
                    lstSObjects.Add(d.name);
                    Response.Write("object name:" + d.name);
                }
            }
            catch (Exception e)
            {
                Response.Write("Could not retrieve the Sobjects from Salesforce. " + e.Message);
            }
            //check

            //check
        }








        protected void Button1_Click(object sender, EventArgs e)
        {

            SforceService sfService = new SforceService();
            MetadataService ms = new MetadataService();
            LoginResult lResult = new LoginResult();
            GetUserInfoResult uInfo = new GetUserInfoResult();

            sf = new WebApplication1.WebReference.SforceService();
            lr = new WebApplication1.WebReference.LoginResult();
            metaService = new MetadataService();
            userInfo = new GetUserInfoResult();
            lResult = sfService.login("sushanto.dodo@gmail.com", "sushanto14#2vk4KTBFv94mOHKUvZKkJ4Gpc");
            sfService.Url = lResult.serverUrl;
            Response.Write("URL : " + lResult.serverUrl);
            WebReference.SessionHeader hd = new WebReference.SessionHeader();
            hd.sessionId = lResult.sessionId;
            sfService.SessionHeaderValue = hd;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");

            this.sf = sfService;
            this.lr = lResult;
            this.userInfo = uInfo;
            this.metaService = ms;
            Response.Write("logged in");


            // getProfile();
            // getUser();
            retrieveSObjects();
           String strFolder = "Profile";
            String pckgType = "Profile";

            List<ProfileObjectPermissions> lstProfObjPerm = new List<ProfileObjectPermissions>();
            List<PackageTypeMembers> lstPtm = new List<PackageTypeMembers>();
            foreach (String s in lstSObjects)
            {
                SFMetadata.ProfileObjectPermissions profObjPerm = new SFMetadata.ProfileObjectPermissions();
                profObjPerm.@object = s;
                lstProfObjPerm.Add(profObjPerm);

                SFMetadata.PackageTypeMembers objPckTypMembers = new SFMetadata.PackageTypeMembers();
                List<String> lstMembers = new List<String>();
                lstMembers.Add(s);
                objPckTypMembers.members = lstMembers.ToArray();
                lstPtm.Add(objPckTypMembers);

            }

            Package pck = new Package();
            pck.types = lstPtm.ToArray();

            SFMetadata.Profile objProfile = new SFMetadata.Profile();

            objProfile.objectPermissions = lstProfObjPerm.ToArray();

            // Call the methods to retrieve the profiles and zip file
            // REPLACED  THE LIST PACKAGE METHOD

            // can't use wildcards with reports, so need to fetch the list
            // of ReportFolders first, then fetch all the reports in
            // each folder.
            ListMetadataQuery q = new ListMetadataQuery();
            q.type = strFolder;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");
            FileProperties[] fp = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
            /*
            if (fp == null)
            {
                Console.WriteLine("No profile folders returned");
                return ;
            }

            List<String> packageFiles = new List<String>();
            q.type = pckgType;
            foreach (FileProperties p in fp)
            {
                q.folder = p.fullName;
                // listMetadata can take more than one item at a time
                // left as an exercise for the reader to batch up these calls.
                FileProperties[] rps = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
                if (fp == null) continue;
                foreach (FileProperties rp in rps)
                {
                    Console.WriteLine("{0}", rp.fileName);
                    packageFiles.Add(rp.fullName);
                }
            }

            String[] profileFiles = packageFiles.ToArray(); ;

            // RETRIEVEPACKAGE METHOD CODE

            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            //r.unpackaged = new Package();
            r.unpackaged = pck;

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = pckgType;
            m.members = profileFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\" + pckgType + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
            */
            Response.Write("Extraction Complete.");
            Response.Write("RetrievedSObjects");

        }



    }
}