Note that when defining your columns that they must be in the same ordinal position as defined in the stored procedure. Changing the ordinal position in your metadata definition will NOT change the ordinal position, but rather it will simply change the column names returned by your query.
EXEC usp_Customer WITH RESULT SETS ((LastName nvarchar(50) NOT NULL, FirstName nvarchar(50) NOT NULL))
To maintain a session in SSIS, set "Retain Same Connection" property of the Connection Manager to True
set DelayValidation for that task as True