Failed to load resource: the server responded with a status of 500()

Hallo zusammen,

ich habe letzte Woche Freitag die Embedded Documents Version 2.4.4 auf unserem Produktivsystem installiert. Soweit funktioniert fast alles.
Bis auf die Custom Stempel und wohl auch die Initialien für die User.

ich bekomme hier in der Konsole dazu auch einen 500 Error:

Der Fehler wird in der Konsole lediglich auf die Zeile mit console.error(response); zurückgeführt.

Failed to load resource: the server responded with a status of 500 ()
saveStamps.js:61 
Response
body: (...)
bodyUsed: false
headers: Headers {}
ok: false
redirected: false
status: 500
statusText: ""
type: "basic"
url: "http://10.192.162.142/osrest/api/session/settings/custom/save"
[[Prototype]]: Response

Nachfolgend die beiden Interceptoren für Stempel und Signaturen:

saveStamps.js
/*
Dieser Interceptor speichert und lädt die Custom Stempel.
*/

class PersistStamps {
    stampsLoaded = false;
    tool = null;
    STORAGE_KEY_CUSTOM = "ed-stamps-custom";
    // Beim starten der Editor Instanz
    initEditorConfiguration(instance) {
      const { documentViewer } = instance.Core;
  
      // Stempel Tool holen
      this.tool = documentViewer.getTool('AnnotationCreateRubberStamp');
  
      // Immer speichern wenn ein Stempel hinzugefügt, geändert oder gelöscht wird
      this.tool.addEventListener('stampsUpdated', (stampData) => {
        this.saveStamps();
      });
      // Nachdem das Dokument geladen wurde, prüfen ob die gespecherten Stempel schon importiert wurden.
      documentViewer.addEventListener('documentLoaded', () => {
        // Nur einmal laden
        if(this.stampsLoaded){
          return;
        }
  
        this.loadStamps();
        this.stampsLoaded = true;
      
      });
    }
  
    // Methode zum speichern der Stempel
    async saveStamps() {
      // Nur speichern, wenn das erste Dokument geladen wurde
      if(!this.stampsLoaded){
        return;
      }
      const stamps = this.tool.getCustomStamps();
      for(const stamp of stamps){
        stamp.textColor = this.convertColor(stamp.textColor);
      }

      const data = {
        type: 80,
        name: this.STORAGE_KEY_CUSTOM,
        value: JSON.stringify(stamps),
      };
  
      const response = await fetch(`/osrest/api/session/settings/custom/save`, {
        method: 'POST',
        body: JSON.stringify(data),
        headers: {
          'Content-Type': 'application/json',
        },
      });
      // Prüfen ob die Signature gespeichert werden konnte
      if (response.status == 204) {
        console.log('Stamps saved');
      } else {
        console.error(response);
      }
    }
  
    // Methode zum laden der Stempel
    async loadStamps() {
      const customStampsResponse = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=${this.STORAGE_KEY_CUSTOM}` );
      // Prüfen ob das laden erfolgreich war
      if (customStampsResponse.status == 200) {
        const customStamps = await customStampsResponse.json();

        if (customStamps.value) {
          // Import der Stempel in embedded documents
          const customStampsValue = JSON.parse(customStamps.value);
          for(const customStamp of customStampsValue){
            customStamp.textColor = this.convertColor(customStamp.textColor);
          }
          await this.tool.setCustomStamps(customStampsValue);
          console.log('Custom Stamps loaded');
        }
      } else {
        console.error(response);
      }
    }

    convertColor(color) {
        const zeroPad = (num, places) => String(num).padStart(places, '0');

        if(color instanceof Object){
            return ("#" + zeroPad(color.R.toString(16)) + zeroPad(color.G.toString(16)) + zeroPad(color.B.toString(16))).toUpperCase();
        } else {
            return color;
        }
      }
  }
  
  // Registrierung des Interceptors
  window.ed.registerInterceptor(new PersistStamps());


SignatureInterceptor.js

Signature Interceptor welcher die Signaturen in den Custom Settings des Benutzers speichert und lädt.
Details hierzu finden Sie in der AppConnector API unter https://help.optimal-systems.com/enaio_develop/pages/viewpage.action?pageId=1867869#SessionService(/session)-/osrest/api/session/settings/custom/load
*/

var signatureInterceptor = {
  // Beim starten der Editor Instanz
  initEditorConfiguration(instance) {
    const { documentViewer } = instance.Core;

    // Signatur Tool holen
    const signatureTool = documentViewer.getTool('AnnotationCreateSignature');

    // Methode zum speichern der Signaturen definieren
    const saveSignature = async () => {
      const signatures = await signatureTool.exportSignatures();

      const data = {
        type: 80,
        name: 'ed-signatures',
        value: JSON.stringify(signatures),
      };

      const response = await fetch(`/osrest/api/session/settings/custom/save`, {
        method: 'POST',
        body: JSON.stringify(data),
        headers: {
          'Content-Type': 'application/json',
        },
      });
      // Prüfen ob die Signature gespeichert werden konnte
      if (response.status == 204) {
        console.log('Signature saved');
      } else {
        console.error(response);
      }
    };
    // Methode zum laden der Signaturen definieren
    const loadSignature = async () => {
      const currentSignatures = await signatureTool.exportSignatures();
      if(!currentSignatures?.length > 0){
        const response = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=ed-signatures`);
        // Prüfen ob das laden erfolgreich war
        if (response.status == 200) {
          const signatures = await response.json();
          if (signatures.value) {
            // Import der Signaturen in embedded documents
            const signatureValue = JSON.parse(signatures.value);
            await signatureTool.importSignatures(signatureValue);
            console.log(signatureValue);
            console.log('Signature loaded');
         }
        } else {
            console.error(response);
        }
      } else {
        console.log('Signatures already loaded');
      }
    };

    // Immer speichern wenn eine Signatur erstellt oder gelöscht wird
    signatureTool.addEventListener('signatureSaved', saveSignature);
    signatureTool.addEventListener('signatureDeleted', saveSignature);
    // Nachdem das Dokument geladen wurde, prüfen ob die Signaturen schon importiert wurden. Darf nicht zuvor passieren, da diese ansonsten nicht auftauchen.
    documentViewer.addEventListener("documentLoaded",  loadSignature);

  },
};	
window.ed.registerInterceptor(signatureInterceptor);

Auf unserem Testsystem klappt das soweit alles. Jedoch ist mir aufgefallen, das dort die Signaturen keine Initialien haben.

Das wären soweit erstmal aber die einzigen Features, welche noch nicht korrekt laufen.

LG

Max Bitzer

Hallo @MaxBitzer ,

kannst du in dem Log des AppConnectors nachsehen, ob hier der Grund für den 500 Internal Error zu sehen ist. Die Logs liegen unter [enaio-Installationspfad]\Services\appconnector\configuration\logs.

Gruss Uli

Hallo @uw

Danke für den Hinweis, mit den Logs konnte ich das 1. Problem Identifizieren.
Der Storage_Key war bereits einmal im Einsatz und konnte nicht verwendet werden, ich musste diesen Umbenennen, danach hat alles geklappt.

Jetzt ist nur noch das Problem mit den Initialien offen, welche nicht gespeichert werden.
Da diese nicht auf dem Testserver vorhanden waren, vermute ich, das lediglich ein abschnitt dazu im Code fehlt.

LG

Max Bitzer

Ergänzung:

Das Problem mit den Stempeln wurde verursacht durch 2 custom stams, welche noch in der produktivumgebung zusätzlich per interceptor hätten eingebunden werden sollen.

→ Diese beiden Stamps wurden einfach in den Stempel Interceptor mit eingebunden.

Das wäre nun der letzte Punkt in unserer aktuellen Produktiv Umgebung.

Falls hier Infos existieren, gerne her damit, dann forste ich mich auch gerne einmal durch.

Denn aktuell wird das hier:

nach erneutem öffnen hierzu:

LG

Max Bitzer

Hallo @MaxBitzer - Sorry für die Nachfrage. Ich stehe hier leider auf dem Schlauch, was genau ist das Problem?

Hallo @rk

wie bereits telefonisch besprochen stelle ich zu den Initialien eine Anfrage bei K1 ein, diese wird euch hoffentlich erreichen.

LG

Max Bitzer

1 „Gefällt mir“