2017-07-26 9 views
0

Ich entwickelte eine Website mit Asp.Net MVC und Edmx-Datenbank und ich veröffentlichte diese Website auf azurblau und meine Datenbank ist auch auf azurblau und ich habe eine Funktionalität auf der Website, die Excel-Datensatz in die Datenbank hochladen und Dieses Excel-Blatt enthält fast 18000 Datensätze jedes Mal, wenn ich dieses Blatt hochlade es Timeout-Fehler nach einiger Zeit werfen, was soll ich tun.Timeout 500 Fehler auf Edmx

enter image description here

Anfang war ich jeden Befehl Timeout nicht verwenden, aber nach einiger Forschung dies in Ich verwende Konstruktor

public ProfessionalServicesEntities() 
     : base("name=ProfessionalServicesEntities") 
    { 
     this.Database.CommandTimeout = 10000; 
     //this.Database.CommandTimeout = 0; //I tried this too. 

     //((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 3600; 
    } 

Hier ist der Code von Funktion: -

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

Hier ist der Kontextdateicode für 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); 
    } 
+0

für die Verarbeitung – jamiedanq

+0

@jamiedanq die angegebene Zeit erhöhen, wie? – Abhay

+0

Können Sie Code für Datei-Upload, web.config & Datenkontext anzeigen, den Sie verwenden (falls vorhanden)? Wie oft ist es vergangen, bis das Timeout erreicht wurde? Ich möchte auch wissen, ob Sie "ObjectContext.CommandTimeout" einen Wert zugewiesen haben. –

Antwort

0

Möglicherweise bearbeiten Sie die Excel-Datei selbst und verarbeiten sie Zeile für Zeile. Sie haben zwei Möglichkeiten: Zum einen können Sie einen Hintergrundjob einplanen, um die Upload-Datei abzurufen und in die Datenbank einzufügen und die Anfrage abzuschließen.

Die nächste Option ist, die gesamte Datei auf einmal zu lesen und eine einzelne Masseneinfügung in die DB durchzuführen.

+0

Eigentlich übergebe ich Xml an meine gespeicherte Prozedur und es Xml als Parameter und dann mit Openxml einfügen die Daten in DB. – Abhay

0

Es gibt zu viele Dinge, die dies verursachen können. In Azure App Service gibt es ein Front-End, das eine Zeitüberschreitung von 240 Sekunden hat. Wenn Ihre Anwendung mehr Zeit in Anspruch nimmt, können Sie darauf stoßen. Dies könnte einer der möglichen Ursachen sein.

Um zu verstehen, was passiert. Aktiviert Webserverprotokollierung und Fehler beim Anfordern der Ablaufverfolgung.

Diagnostic logs

Sehen Sie dies für das weitere Vorgehen: https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log

+0

Dies funktioniert nicht – Abhay

+0

Was nicht funktioniert. Können Sie weitere Details hinzufügen? –