Ich hatte beim Deployment einer ASP.NET Anwendung das Problem, dass mehrere Aspx-Seiten über eine OutputCache Direktive verfügten, die von den Entwicklern auf ihren Entwicklerrechnern immer wieder geändert wurden um beim Debuggen den Cache abzuschalten.


Leider ist es öfters passiert, dass diese Änderungen aus Unachtsamkeit ihren Weg in unsere Versionsverwaltung gefunden haben und somit auch auf den Webservern für eine erhöhte Last gesorgt haben.


Das Problem lässt sich einfach umgehen, indem man den OutputCache nicht direkt in der Aspx-Seite konfiguriert, sondern in der Web.config Cache-Profile [1] anlegt und diese dann den Aspx-Seiten zuweist. Da bei uns jeder Entwickler für seine Web.config verantwortlich ist und diese nie in die Versionsverwaltung gelangen, eine perfekte Lösung. Und so einfach geht es:


Aus

<%@ OutputCache Location="ServerAndClient" VaryByParam="*" Duration="180"%>
 
in der ASP Seite wird

<%@ OutputCache CacheProfile="DefautCache"%>
 
in der Web.config werden dann unter folgende Einträge hinzugefügt:

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <addname="DefaultCache"duration="180"
        location="ServerAndClient"
        varyByParam="*"/>

    </outputCacheProfiles>
  </outputCacheSettings>
</caching>
 

Vorteile:
• Nun muss der Entwickler nur noch einen Parameter in seiner Web.config ändern um den Cache abzuschalten
• andere Cache-Zeiten können nun zentral in der Web.config konfiguriert werden
• Durch die Möglichkeit mehrere Profile zu erstellen bleibt man flexibel, auch bei unterschiedlichen Anforderungen in verschiedenen Seiten

[1] MSDN How to: Set the Cacheability of an ASP.NET Page Declaratively

VCalendar und ganztägiger Termin in Outlook

Donnerstag, 16. November 2006

Ich hatte heute das Problem, dass ein per Code generierter VCalendar-Termin in Outlook nicht als ganztägiger Termin angezeigt wurde, obwohl das Flag X-MICROSOFT-CDO-ALLDAYEVENT gesetzt war.
Die Lösung seht ihr an diesem vereinfachtem Beispiel. Der einzige Unterschied ist, dass DTEND um einen Tag erhöht werden muss. Der Zeitanteil der beiden Daten muss auch den Wert "000000" haben, sonst funktioniert es nicht.
(Getestet mit Outlook 2007 Beta)

Funktioniert nicht:
BEGIN:VCALENDAR
PRODID:---
METHOD:PUBLISH
VERSION:2.0
BEGIN:VEVENT
UID:123456
SUMMARY:Test-Termin
DTSTART;VALUE=DATE:20061122T000000
DTEND;VALUE=DATE:20061122T000000
CLASS:PUBLIC
PRIORITY:5
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
END:VEVENT
END:VCALENDAR

Funktioniert:
BEGIN:VCALENDAR
PRODID:---
METHOD:PUBLISH
VERSION:2.0
BEGIN:VEVENT
UID:123456
SUMMARY:Test-Termin
DTSTART;VALUE=DATE:20061122T000000
DTEND;VALUE=DATE:20061123T000000
CLASS:PUBLIC
PRIORITY:5
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
END:VEVENT
END:VCALENDAR

Refactoring Contest gestartet

Mittwoch, 15. November 2006

Billy McCafferty lädt seit heute zu einem wöchentlichen "Refactoring Contest" ein.
Jeden Dienstag wird es ein .Net 2.0 Programm geben, in dem sich mehrere Unschönheiten verstecken, welche durch Refactoring aufgelöst werden sollen.
Eine genaue Beschreibung mit Lösungsansätzen, in Form vom Hinweisen auf die zu verwendenden Refactorisierungsmethode(n), helfen auch den Neulingen auf diesem Gebiet schnell einzusteigen und ihr Wissen Woche um Woche zu erweitern.
Der Schwierigkeitsgrad soll jede Woche gesteigert werden, so dass bald auch "alte Hasen" die ein oder andere Kopfnuss zu knacken bekommen werden.

Hier nochmal die Spielregeln und hier gehts direkt zum 1. Contest.

(Seite 1 von 1, insgesamt 3 Einträge)