我在 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);
}
}
任何帮助都会很棒。