RazorEngine Fehler beim Senden der E-Mail

8

Ich habe eine MVC 4-Anwendung, die mehrere E-Mails versendet. Ich habe zum Beispiel eine E-Mail-Vorlage zum Absenden einer Bestellung, eine Vorlage zum Stornieren einer Bestellung usw. ...

Ich habe ein Email Service mit mehreren Methoden. Mein Controller ruft die Methode Send auf, die wie folgt aussieht:

%Vor%

Die Methode Send ruft GetContent auf. Dies ist die Methode, die das Problem verursacht:

%Vor%

Ich erhalte den Fehler:

  

Derselbe Schlüssel wurde bereits für eine andere Vorlage verwendet!

In meiner GetContent -Methode sollte ich einen neuen Parameter für TemplateKey hinzufügen und diese Variable verwenden, anstatt immer htmlTemplate ? Dann könnte die new order email template newOrderKey und CancelOrderKey haben, damit die E-Mail-Vorlage eine Bestellung storniert?

    
Andrew 22.04.2015, 16:24
quelle

1 Antwort

16

Erklärung

Dies geschieht, weil Sie denselben Vorlagenschlüssel ( "htmlTemplate" ) für mehrere verschiedene Vorlagen verwenden. Beachten Sie, dass bei der Art, wie Sie GetContent implementiert haben, mehrere Probleme auftreten:

  • Auch wenn Sie einen eindeutigen Schlüssel verwenden, z. B. die Variable template , lösen Sie die Ausnahme aus, wenn die Vorlagen auf der Festplatte bearbeitet werden.

  • Leistung: Sie lesen die Vorlagendatei jedes Mal, selbst wenn die Vorlage bereits zwischengespeichert ist.

Lösung:

Implementieren Sie die ITemplateManager -Schnittstelle, um Ihre Vorlagen zu verwalten:

%Vor%

Setup beim Start:

%Vor%

Und benutze es:

%Vor%

RazorEngine wird nun alle oben genannten Probleme intern beheben. Beachten Sie, dass es völlig in Ordnung ist, den Namen der Vorlage als Schlüssel zu verwenden, wenn in Ihrem Szenario der Name alles ist, was Sie zum Identifizieren einer Vorlage benötigen (andernfalls können Sie NameOnlyTemplateKey nicht verwenden und müssen Ihre eigene Implementierung bereitstellen).

Hoffe, das hilft. (Haftungsausschluss: Mitarbeiter von RazorEngine)

    
matthid 22.04.2015, 18:51
quelle

Tags und Links