WCF Отдых с памятью - PullRequest
       33

WCF Отдых с памятью

0 голосов
/ 16 августа 2011

Я создал службу отдыха в asp.net 4, она была сгенерирована инструментом nhydrate.когда я запускаю службу и перехожу на страницу справки службы, и при выборе и примере сложного метода со многими взаимосвязями w3wp.exe начинает занимать всю память сервера за 3 минуты, а служба возвращает исключение из памяти.Я действительно запутался в этом вопросе, любая помощь будет очень признательна, обратите внимание, что все данные, которые я запрашиваю, представляют собой небольшие пакеты JSON, но отображенная таблица для этого метода сложна.

public class DataService : IDataService
    {
        /// <summary>
        /// Get a list of all GetJobList DTO items
        /// </summary>
        public List<di.testproj.DataTransfer.Job> GetJobList()
        {
            var retval = new List<di.testproj.DataTransfer.Job>();
            retval.RunSelect();
            return retval;
        }   
    }



[ServiceContract]
    public interface IDataService
    {

        #region Job Select All

        /// <summary>
        /// Get a list of all Job DTO items
        /// </summary>
        /// 
        [WebGet(UriTemplate = "JobList", ResponseFormat = WebMessageFormat.Json)]
        [Description("Description for GET /JobList")]
        [OperationContract]
        List<di.testproj.DataTransfer.Job> GetJobList();

        #endregion
    }

Уровень DTO:

[Serializable()]
    [DataContract()]
    public partial class Job : IDTO
    {
        #region Class Members

        #region FieldNameConstants Enumeration

        /// <summary>
        /// An enumeration of this object's fields
        /// </summary>
        public enum FieldNameConstants
        {
             /// <summary>
             /// Field mapping for the 'SectorID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'SectorID' property")]
            SectorID,
             /// <summary>
             /// Field mapping for the 'SectionID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'SectionID' property")]
            SectionID,
             /// <summary>
             /// Field mapping for the 'ReportingToID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'ReportingToID' property")]
            ReportingToID,
             /// <summary>
             /// Field mapping for the 'PreferredQualificationsEn' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'PreferredQualificationsEn' property")]
            PreferredQualificationsEn,
             /// <summary>
             /// Field mapping for the 'PreferredQualificationsAr' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'PreferredQualificationsAr' property")]
            PreferredQualificationsAr,
             /// <summary>
             /// Field mapping for the 'PreferredExperinceEn' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'PreferredExperinceEn' property")]
            PreferredExperinceEn,
             /// <summary>
             /// Field mapping for the 'PreferredExperinceAr' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'PreferredExperinceAr' property")]
            PreferredExperinceAr,
             /// <summary>
             /// Field mapping for the 'JobTypeID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobTypeID' property")]
            JobTypeID,
             /// <summary>
             /// Field mapping for the 'JobTitleEn' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobTitleEn' property")]
            JobTitleEn,
             /// <summary>
             /// Field mapping for the 'JobTitleAr' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobTitleAr' property")]
            JobTitleAr,
             /// <summary>
             /// Field mapping for the 'JobObjectiveEn' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobObjectiveEn' property")]
            JobObjectiveEn,
             /// <summary>
             /// Field mapping for the 'JobObjectiveAr' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobObjectiveAr' property")]
            JobObjectiveAr,
             /// <summary>
             /// Field mapping for the 'JobID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobID' property")]
            JobID,
             /// <summary>
             /// Field mapping for the 'JobFamilyID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobFamilyID' property")]
            JobFamilyID,
             /// <summary>
             /// Field mapping for the 'JobCategoryID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'JobCategoryID' property")]
            JobCategoryID,
             /// <summary>
             /// Field mapping for the 'IsActive' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'IsActive' property")]
            IsActive,
             /// <summary>
             /// Field mapping for the 'ID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'ID' property")]
            ID,
             /// <summary>
             /// Field mapping for the 'DivisionID' property
             /// </summary>
            [System.ComponentModel.Description("Field mapping for the 'DivisionID' property")]
            DivisionID,
        }

        #endregion

        #endregion

        #region Constructors

        /// <summary>
        /// The default contructor for the Job DTO
        /// </summary>
        public Job()
        {
        }

        #endregion

        #region Object Properties

        /// <summary>
        /// The DivisionID field
        /// </summary>
        [DataMember()]
        public virtual int? DivisionID { get; set; }
        /// <summary>
        /// The ID field
        /// </summary>
        [DataMember()]
        public virtual int ID { get; set; }
        /// <summary>
        /// The IsActive field
        /// </summary>
        [DataMember()]
        public virtual bool? IsActive { get; set; }
        /// <summary>
        /// The JobCategoryID field
        /// </summary>
        [DataMember()]
        public virtual int? JobCategoryID { get; set; }
        /// <summary>
        /// The JobFamilyID field
        /// </summary>
        [DataMember()]
        public virtual int? JobFamilyID { get; set; }
        /// <summary>
        /// The JobID field
        /// </summary>
        [DataMember()]
        public virtual int JobID { get; set; }
        /// <summary>
        /// The JobObjectiveAr field
        /// </summary>
        [DataMember()]
        public virtual string JobObjectiveAr { get; set; }
        /// <summary>
        /// The JobObjectiveEn field
        /// </summary>
        [DataMember()]
        public virtual string JobObjectiveEn { get; set; }
        /// <summary>
        /// The JobTitleAr field
        /// </summary>
        [DataMember()]
        public virtual string JobTitleAr { get; set; }
        /// <summary>
        /// The JobTitleEn field
        /// </summary>
        [DataMember()]
        public virtual string JobTitleEn { get; set; }
        /// <summary>
        /// The JobTypeID field
        /// </summary>
        [DataMember()]
        public virtual int? JobTypeID { get; set; }
        /// <summary>
        /// The PreferredExperinceAr field
        /// </summary>
        [DataMember()]
        public virtual string PreferredExperinceAr { get; set; }
        /// <summary>
        /// The PreferredExperinceEn field
        /// </summary>
        [DataMember()]
        public virtual string PreferredExperinceEn { get; set; }
        /// <summary>
        /// The PreferredQualificationsAr field
        /// </summary>
        [DataMember()]
        public virtual string PreferredQualificationsAr { get; set; }
        /// <summary>
        /// The PreferredQualificationsEn field
        /// </summary>
        [DataMember()]
        public virtual string PreferredQualificationsEn { get; set; }
        /// <summary>
        /// The ReportingToID field
        /// </summary>
        [DataMember()]
        public virtual int? ReportingToID { get; set; }
        /// <summary>
        /// The SectionID field
        /// </summary>
        [DataMember()]
        public virtual int? SectionID { get; set; }
        /// <summary>
        /// The SectorID field
        /// </summary>
        [DataMember()]
        public virtual int? SectorID { get; set; }

        #endregion

        #region Navigation Properties

        /// <summary>
        /// The relation Job -> Competency
        /// </summary>
        [DataMember()]
        public virtual IList<Competency> CompetencyList { get; set; }

        /// <summary>
        /// The relation Job -> JobDuty (Role: Jobduties_jobs)
        /// </summary>
        [DataMember()]
        public virtual IList<JobDuty> Jobduties_jobsJobDutyList { get; set; }

        /// <summary>
        /// The relation Job -> Job (Role: Jobs_jobs)
        /// </summary>
        [DataMember()]
        public virtual IList<Job> Jobs_jobsJobList { get; set; }

        /// <summary>
        /// The relation JobCategorie -> Job (Role: Jobs_jobcategories)
        /// </summary>
        [DataMember()]
        public virtual JobCategorie Jobs_jobcategoriesJobCategorie { get; set; }

        /// <summary>
        /// The relation JobFamily -> Job (Role: Jobs_jobfamilies)
        /// </summary>
        [DataMember()]
        public virtual JobFamily Jobs_jobfamiliesJobFamily { get; set; }

        /// <summary>
        /// The relation Job -> Job (Role: Jobs_jobs)
        /// </summary>
        [DataMember()]
        public virtual Job Jobs_jobsJob { get; set; }

        /// <summary>
        /// The relation JobType -> Job (Role: Jobs_jobtypes)
        /// </summary>
        [DataMember()]
        public virtual JobType Jobs_jobtypesJobType { get; set; }

        /// <summary>
        /// The relation Sector -> Job (Role: Jobs_sectors)
        /// </summary>
        [DataMember()]
        public virtual Sector Jobs_sectorsSector { get; set; }

        #endregion

    }

}


public static void RunSelect(this List<di.testproj.DataTransfer.Competency> list)
        {
            if (list == null) list = new List<di.testproj.DataTransfer.Competency>();
            var retval = di.testproj.Business.Objects.CompetencyCollection.RunSelect();
            foreach (di.testproj.Business.Objects.Competency item in retval)
            {
                var newItem = new di.testproj.DataTransfer.Competency();
                newItem.Fill(item);
                list.Add(newItem);
            }
        }

Любая помощь будет отличной.

1 Ответ

0 голосов
/ 16 августа 2011

Я не вижу здесь ничего необычного.Может быть, вы можете добавить код из вашего метода обслуживания и контракт данных, который вы используете.

...