我开发了一个使用Asp.Net MVC和Edmx数据库的网站,并且我在azure上发布了这个网站,而且我的数据库也是azure,并且我在网站上有一个功能,可以将excel记录上传到数据库中, Excel表格每次包含近18000条记录,每次我上传表格时,会在一段时间后抛出Timeout错误,所以我该怎么做。在Edmx上超时500错误
起初,我并没有使用任何命令的超时,但我在构造函数中
public ProfessionalServicesEntities()
: base("name=ProfessionalServicesEntities")
{
this.Database.CommandTimeout = 10000;
//this.Database.CommandTimeout = 0; //I tried this too.
//((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 3600;
}
这里用这个做一些研究后 函数的代码: -
public void SaveEquipments(IEnumerable<EquipSampleEntity> collection)
{
using (ProfessionalServicesEntities db = new ProfessionalServicesEntities())
{
string modelXml = XmlSerialization.ListToXml(collection.Where(x=>x.Type == Model).ToList());
string accessoryXml = XmlSerialization.ListToXml(collection.Where(x => x.Type == Accessory).ToList());
db.ImportEquipmentFile(modelXml, accessoryXml);
}
}
这里是SP的上下文文件代码: -
public virtual int ImportEquipmentFile(string modelXml, string accessoryXml)
{
var modelXmlParameter = modelXml != null ?
new ObjectParameter("ModelXml", modelXml) :
new ObjectParameter("ModelXml", typeof(string));
var accessoryXmlParameter = accessoryXml != null ?
new ObjectParameter("AccessoryXml", accessoryXml) :
new ObjectParameter("AccessoryXml", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ImportEquipmentFile", modelXmlParameter, accessoryXmlParameter);
}
增加规定时间进行处理 – jamiedanq
@jamiedanq怎么样? – Abhay
你可以显示你正在使用的文件上传,web.config和数据上下文(如果存在)的代码?超时前已经过了多少次?另外,我想知道是否为'ObjectContext.CommandTimeout'分配了一些值。 –