WCF Rest内存问题

时间:2011-08-15 22:42:34

标签: wcf rest w3wp.exe

我在asp.net 4中创建了一个由nhydrate工具生成的休息服务。当我运行服务并浏览到服务帮助页面,以及选择和示例的复杂方法有很多关系时,w3wp.exe开始在3分钟内占用所有服务器内存,服务返回outofmemoeryexception。我真的很担心这个问题,任何帮助都会非常感激,请注意我所要求的所有数据都是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 :(得分:0)

我在这里看不到任何异常。也许您可以添加服务方法和您正在使用的数据合同中的代码。