Edmx超时500错误

时间:2017-07-26 07:20:00

标签: asp.net-mvc excel azure timeout edmx

我使用Asp.Net MVC和Edmx数据库开发了一个网站,我在azure上发布了这个网站,我的数据库也在azure上,我在网站上将excel记录上传到数据库并且excel表包含的功能每次我上传该表时差不多18000条记录,它会在一段时间后抛出超时错误,所以我应该怎么做。

enter image description here

最初我没有使用任何命令超时,但在做了一些研究之后我在构造函数中使用它

 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);
    }

2 个答案:

答案 0 :(得分:0)

您可能正在处理上传本身的Excel并逐行处理。您有两个选项,一个是安排后台作业来拾取上传文件并将其插入到数据库中并完成请求。

下一个选项是一次性读取整个文件,并在数据库中执行单个批量插入。

答案 1 :(得分:0)

有太多事情可以导致这种情况。在Azure App Service中,有一个前端,其超时时间为240秒。如果您的应用程序需要更多时间,那么您可能会遇到此问题。这可能是可能的原因之一。

为了理解正在发生的事情。已启用 Web服务器日志记录失败的请求跟踪

Diagnostic logs

有关如何进一步处理的信息,请参阅此处:https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log