Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Edmx上的超时500错误_Asp.net Mvc_Excel_Azure_Timeout_Edmx - Fatal编程技术网

Asp.net mvc Edmx上的超时500错误

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

我使用Asp.Net MVC和Edmx数据库开发了一个网站,我在azure上发布了这个网站,我的数据库也在azure上,我在网站上有一个功能,可以将excel记录上载到数据库,excel工作表每次上载该工作表时都包含近18000条记录。过了一段时间,它会抛出超时错误,我该怎么办做

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

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