Asp.net mvc Edmx上的超时500错误
我使用Asp.Net MVC和Edmx数据库开发了一个网站,我在azure上发布了这个网站,我的数据库也在azure上,我在网站上有一个功能,可以将excel记录上载到数据库,excel工作表每次上载该工作表时都包含近18000条记录。过了一段时间,它会抛出超时错误,我该怎么办做 起初我并没有使用任何命令超时,但在做了一些研究之后,我在构造函数中使用了它Asp.net mvc Edmx上的超时500错误,asp.net-mvc,excel,azure,timeout,edmx,Asp.net Mvc,Excel,Azure,Timeout,Edmx,我使用Asp.Net MVC和Edmx数据库开发了一个网站,我在azure上发布了这个网站,我的数据库也在azure上,我在网站上有一个功能,可以将excel记录上载到数据库,excel工作表每次上载该工作表时都包含近18000条记录。过了一段时间,它会抛出超时错误,我该怎么办做 起初我并没有使用任何命令超时,但在做了一些研究之后,我在构造函数中使用了它 public ProfessionalServicesEntities() : base("name=Profession
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);
}
}
您可能正在上载excel并逐行处理它。您有两种选择,一种是安排后台作业来拾取上载文件并将其插入数据库并完成请求
下一个选项是一次性读取整个文件,并向数据库中进行一次大容量插入。可能导致这种情况的因素太多了。在Azure应用程序服务中,有一个超时为240秒的前端。如果您的应用程序需要更多的时间,那么您可能会遇到这种情况。这可能是原因之一 为了了解正在发生的事情。启用Web服务器日志记录和请求跟踪失败
有关如何进一步操作,请参见此部分:实际上,我正在将xml传递到存储过程,它将xml作为参数,然后使用openxml将数据插入到数据库中。增加指定的时间processing@jamiedanq如何显示?您是否可以显示正在使用的文件上载、web.config和数据上下文的代码(如果存在)?在达到超时之前经过了多少次?另外,我想知道是否为
ObjectContext.CommandTimeout
分配了一些值。这是在Azure应用程序服务上运行还是在IaaS VM上运行?@KaushalKumarPanday Azure应用程序服务
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);
}