Bei der Umstellung / Migration der Entwicklungsumgebung von Visual Studio 2003 (für ein Projekt wurden bisher Module für DNN 3.2.2 erstellt) auf Visual Studio 2008 und die Projektart WAP (Web Application Projects), bekam ich immer folgende Meldung bei der Konfiguration vom Server (IIS):

Diese Konfiguration ist aber notwendig, damit man das WAP-DNN-Modul Projekt vernüftig debuggen kann. Die Meldung ist zunächst verwirrend, denn unter der angegebenen URL war bereits ein komplett lauffähiges DotNetNuke installiert und die URL war natürlich als Anwendung konfiguriert. Es konnte also nicht im IIS liegen (IIS unter Vista). Die Berechtigungen war auch richtig gesetzt und waren nicht der Grund für diese Meldung.
Die Lösung war dann folgende Konfiguration:
- Bei Projekt-URL habe ich den kompletten Pfad zum Modul eingetragen (also z.B. http://gmsshop/desktopmodules/shopsystem)
- Damit nun die Verweise z.B. in den ASCX Dateien richtig funktionieren muss zwigend die Option "URL des Anwendungsstam überschreiben" aktiviert werden.
- Dann die eigentliche URL der DotNetNuke Installation in das dann verfügbare Textfeld schreiben
Mit dieser Konfiguration startet Visual Studio 2008 das DotNetNuke Modul auch wieder im Debugmodus
Derzeit steht die letzte (für uns) Migration eines DotNuke-Portals von der Version 3.2.2 auf die aktuellste Version an. Da es sich hierbei um ein recht großes Portal handelt, bei dem der Communityaspekt im Vordergrund steht, wurden die Benutzerprofile hier sehr stark genutzt und erweitert. Dieses wurde in der Version 3.2.2 durch Veränderungen der web.config erreicht. Bei dem Testlauf einer Migration ist mir nun aufgefallen, dass die zusätzlich definierten benutzerdefinierten User-Propeties nicht mit in das neue Konzept übertragen werden. Um das zu erreichen, muss man das SQL-Upgradescript anpassen und die zu migrierenden Properties dort mit einfügen. Dafür muss man in das SQL-Script mit der Version 03.02.03 einige Änderungen machen: Die StoredProcedure AddDefaultPropertyDefinitions muss um die zusätzlichen Eigenschaften ergänzt werden - dabei wird der Datentyp definiert, die Gruppe, die Bezeichnung, Länge, etc. definiert. Später können diese Eigenschaften auch über die bekannte Benutzerprofilverwaltung angepasst werden. EXECUTE @RC = {databaseOwner}[{objectQualifier}AddPropertyDefinition] @PortalId, -1, @TextDataType, '', 'LowFett','Size' ,0, '', 21, 1, 250
EXECUTE @RC = {databaseOwner}[{objectQualifier}AddPropertyDefinition] @PortalId, -1, @TextDataType, '', 'LowFett','Weight' ,0, '', 21, 1, 250
EXECUTE @RC = {databaseOwner}[{objectQualifier}AddPropertyDefinition] @PortalId, -1, @TextDataType, '', 'LowFett','Eyecolor' ,0, '', 21, 1, 300
EXECUTE @RC = {databaseOwner}[{objectQualifier}AddPropertyDefinition] @PortalId, -1, @TextDataType, '', 'LowFett','Haircolor' ,0, '', 21, 1, 300Die Tabelle FlatProfile wird temp. angelegt um die Daten vom ASP-Membership zwischenzulagern. Auch hier müssen ein paar manuelle Änderungen vorgenommen werden, damit diese Tabelle für die zu migrierenden Daten auch jeweils eine Spalte bekommt - der SQL-Syntax der "normale" für den den SQL-Server - hier zwei Beispiele: [Eyecolor] [nvarchar] (300) NULL ,
[Haircolor] [nvarchar] (300) NULL ,
Dann muss die Ausführug von "INSERT INTO {objectQualifier}FlatProfile" um die entsprechenden Eigenschaften ergänzt werden: {databaseOwner}{objectQualifier}GetProfileElement('Weight',PropertyNames, PropertyValuesString) Weight,
{databaseOwner}{objectQualifier}GetProfileElement('Eyecolor',PropertyNames, PropertyValuesString) Eyecolor,
{databaseOwner}{objectQualifier}GetProfileElement('Haircolor',PropertyNames, PropertyValuesString) Haircolor,
Als letzer Schritt müssen dann noch ein paar zusätzliche SQL-Befehle eingefügt werden, damit die Daten aus der FLAT-Tabelle in die eigentlichen UserProfile-Tabelle geschrieben werden. EXECUTE {objectQualifier}TransferUsersFromFlatProfile N'Eyecolor'
EXECUTE {objectQualifier}TransferUsersFromFlatProfile N'Haircolor'
Wenn diese Schritte für jede zu migrieden benutzerdefinierte Property durchgeführt wurde, dann steht der Migration nichts mehr im Weg.
Bei der Entwicklung von DotNetNuke-Modulen (bzw. auch bei "normalen" ASP.NET Anwendungen) verwende ich recht häufig die Möglichkeit, Usercontrols (ascx) dynmaisch zur Laufzeit anzuzeigen / nachzu laden. Der entsprechende Quellcode dafür ist nicht wirklich neu und sieht so aus: PortalModuleBase objToLoad = this.LoadControl(_ControlToLoad) as PortalModuleBase;
objToLoad.ID = System.IO.Path.GetFileName(_ControlToLoad);
objToLoad.ModuleConfiguration = this.ModuleConfiguration;
this.Controls.Add(objOrderCtrl);
Wichtig dabei ist die Zeile, wo die ID des Controls gesetzt wird, damit die Resourcendateien durch DotNetNuke (durch die Property LocalResourceFile) angesprochen werden können. Bei der Verwendung einer Templateengine für ein Modul und der gleichzeitigen Verwendung von Standard ASP.NET 2.0 Validatoren, bekam ich im Browser immer die Javascript-Fehlermeldung "missing ; before statement". Nach kurzer Recherche habe ich die Ursache gefunden: In den ID's von den Controls wurde ein Punkt verwendet und damit kommt JavaScript bzw. der JavaScript-Code der ASP.NET Validatoren nicht zurecht. Nach Abänderung der ID Zuweisung auf folgende Zeile: objToLoad.ID = System.IO.Path.GetFileNameWithoutExtensi(_ControlToLoad);
funktionieren sowohl die Resourcendateien als auch die Validatoren wieder ohne Probleme.
Um in DotNetNuke für SEO besser geeignete URL's zu nutzen, muss man die web.config bearbeiten. Dieses läßt sich nur global und nich für jedes Portal einzeln aktivieren. <friendlyUrl defaultProvider="DNNFriendlyUrl">
<providers>
<clear />
<add name="DNNFriendlyUrl"
type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider,
DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9
_-]" urlformat="HumanFriendly"/>
</providers>
</friendlyUrl>Setzt man den Parameter urlformat auf "HumandFriendly", dann erhält man folgende URL: http://www.mydomain.com/DotNetnuke-installations-service.aspx Die unter DotNetNuke bezeichneten suchmaschinenfreundlichen URL's sehen wie folgt aus: http://www.mydomain.com/dotnetnuke/installation-service/tabId/566/default.aspx Eigentlich ist die Humanfriendly-Lösung auch deutlich besser für die Suchmaschine geeignet, die Namensgebung stammt wohl noch aus grauer Vorzeit - die Verwendung von HumanFriendly-Urls ist auf jeden Fall zu empfehlen. Jede Seite im DotNetNuke-Portal ist über die drei möglichen Adressierungen ansprechbar: http://www.mydomain.com/default.aspx?tabId=566 http://www.mydomain.com/dotnetnuke/installation-service/tabId/566/default.aspx http://www.mydomain.com/DotNetnuke-installations-service.aspx Eine Abwärtskompatibilität ist somit gegeben, was rein technisch ist das sehr angenehm ist. Aus Sicht der Suchmaschinenoptimierung ist diese Möglichkeit aber gefährlich, da hier die Gefahr des "Duplicated Content" entsteht und identische Inhalt über mehrere URL's erreichbar sind. Es ist also darauf zu achten, dass man eine saubere Weiterleitung einrichtet!
Eine wichtige Anlaufstelle für Webentwickler, Webdesigner und alle die sich mit HTML, CSS und JavaScript rumschlagen müssen ist SELFHTML. Unter http://visualselfhtml.org gibt es jetzt eine Webanwendung die eine sehr gute und gezielte Suche erlaubt. Ein Stichwortverzeichnis macht die Anwendung so richtig klasse. Diese Webanwendung basiert auf jQuery .... cool :)
Ich bin mir gar nicht sicher, ob es ein Grund zur Freunde ist, dass Mircosoft den IE 8.0 mittlerweile als Final veröffentlicht hat. Eigentlich freue ich mich ja immer über neue Softwareversionen und probiere alles sofort aus. Aktuell bin ich aber noch kritisch, ob man als Webagentur jetzt nicht noch mehr Ärger als ohnehin schon bekommt. Microsoft hat bei der mehr als zwei Jahre andauernden Entwicklung vom IE 8.0 viel Arbeit für de Bereiche Geschwindigkeit und Kompatibilität investiert aber bei dem Acid3-Test nur 20 von 100 möglichen Punkten bekommen. Dahingegen ist die vollständige CSS-2.1-Unterstützung und der der Acid2-Test keine Problem. Was Webentwickler bei der Kompatibilitätsansicht beachten müssen hat Kay Giza hier zusammengefasst Alle Leute die keine Lust auf ein automatisches Update haben, sollten folgendes Toolkit von Mircosoft benutzen, um ein Update zu deaktiveren.
Heute musste ich feststellen das auf einem Windows 2003 Server mit einer Instance vom MS SQL Server 2005 Express DotNetNuke die Arbeit eingestellt hat. Ein Blick in das Eventlog vom Server ergab, das sich der Benutzer nicht mehr am SQL-Server anmelden konnte.
Als ich die Eigenschaften des entsprechenden Datenbank-Benutzers überprüfen wollte, kam die Meldung:
Property IsLocked is not available for Login '[username]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)
Ein Wechsel zwischen dem Anmeldemodus Windows-Auth und gemischter Modus betrachte keine Veränderung - diesen Tipp hatte ich in einem Forum gelesen.
Was geholfen hat war das absetzen vom folgendem SQL-Befehl: ALTER LOGIN [usermae] WITH PASSWORD=N'meintollespwd',CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF, DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] GO ALTER LOGIN [username] ENABLE
Damit konnte sich DotNetNuke wieder anmelden und auch die Eigenschaften vom Benutzer waren wieder einsehbar und konnten über die Managmentkonsole vom SQL-Server modifiziert werden.
Die wirkliche Ursache habe ich noch nicht gefunden - zumindest läuft die Webanwendung wieder!
Aktuell beschäftige ich mich mit der Entwicklung einer kleinen praktischen Komponente, die ein Web 2.0 Popup-Fenster für DotNetNuke Module bereitstellt. Dabei geht es weniger darum eine Bilder anzeigen zu lassen, das Hauptziel ist die Nutzung für Bearbeitungsfenster. Ebenfalls soll das Modul auch in unser Videomodul einfließen, damit das Videos in einem Popup angezeigt werden können. Dazu vielleicht aber später mehr....
Auf eine google-Suche habe ich diese Seite gefunden, die 56 Skripts für Galliers, Slideshows auflistet und direkt zu den entsprechenden Websiten verlinkt.
Mein Favorit ist eigentlich lightbox aber über den Tellerran zu schauen kann ja nie schaden.
Nachtrag: Soeben habe ich einen Kommentar per E-Mail erhalten und mir wurde da http://highslide.com/ ans Herz gelegt, ist zwar nicht kostenfrei aber bietet schon eine ganze Menge an Funktionalität .... man hat doch wirklich die "Qual der Wahl"
In unserem DotNetNuke Shop Modul wird im Administationsbereich einiges mit ASP.NET AJAX durchgeführt. Bisher verlief die Installation der Entwicklungsumgebung auch immer ohne Probleme. Bei einem Kollegen, kam es aber zu einer echt blöden Fehlermeldung:
DotNetNuke.Services.Exceptions.ModuleLoadException: The base class includes the field 'pnlExtPrice', but its type (System.Web.UI.UpdatePanel) is not compatible with the type of control (System.Web.UI.UpdatePanel). ---> System.Web.HttpParseException: The base class includes the field 'pnlExtPrice', but its type (System.Web.UI.UpdatePanel) is not compatible with the type of control (System.Web.UI.UpdatePanel). ---> System.Web.HttpParseException: The base class includes the field 'pnlExtPrice', but its type (System.Web.UI.UpdatePanel) is not compatible with the type of control (System.Web.UI.UpdatePanel). at System.Web.Compilation.BaseTemplateCodeDomTreeGenerator. BuildFieldDeclaration(ControlBuilder builder) at System.Web.Compilation.BaseTemplateCodeDomTreeGenerator. BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, Boolean topLevelControlInTemplate, PropertyEntry pse) at System.Web.Compilation.BaseTemplateCodeDomTreeGenerator. BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, Boolean topLevelControlInTemplate, PropertyEntry pse) at System.Web.Compilation.TemplateControlCodeDomTreeGenerator.
BuildMiscClassMembers() at System.Web.Compilation.BaseCodeDomTreeGenerator.BuildSourceDataTree() at System.Web.Compilation.BaseTemplateBuildProvider. GenerateCode(AssemblyBuilder assemblyBuilder) at System.Web.Compilation.AssemblyBuilder.AddBuildProvider(BuildProvider buildProvider) --- End of inner exception stack trace --- at System.Web.Compilation.AssemblyBuilder.AddBuildProvider(BuildProvider buildProvider) at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() at System.Web.Compilation.BuildProvidersCompiler.PerformBuild() at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath) at System.Web.UI.TemplateControl.LoadControl(String virtualPath) at DotNetNuke.UI.Skins.Skin.InjectModule(Control objPane, ModuleInfo objModule, PortalSettings PortalSettings) --- End of inner exception stack trace ---
Eigentlich war alles so weit auch richtig installiert und in einer anderen DNN Installation lief AJAX ohne größere Probleme. Auf dem Rechner war neben ASP.NET 2.0 auch bereits .NET 3.5 installiert und ich dachte mir schon, das es irgendein Konflikt mit den Versionen sein muss. Eine Recherche im Web hat mich dann auf folgendes Ergebnis gebraucht:
In der web.config muss der Bereich "runtime" wie folgt angepasst werden: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="bin;bin\HttpModules;bin\Providers;bin\Modules;bin\Support;" /> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> </ependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> </dependentAssembly>
</assemblyBinding> <runtime>
Danach läuft das Modul und die AJAX Funktionen - hier im speziellen das UpdatePanel - wieder ohne Probleme.
Bei vielen angemieteten Servern ist die Systempartition meistens sehr klein gewählt und läuft sehr gerne bis zur Speichergrenze voll. Dagegen kann man vollgendes machen:
- Die einzelnen Websites nicht auf c:\inetpub\wwwroot installieren - wie es ja die Standardeinstellung ist - sondern direkt auf d:\ einen eigenen Ordner dafür anlegen.
- Ebenfalls die Logdateien der virtueleln Webserver und SMTP in einem Ordner unter z.B. d:\ ablegen
- Fehlgeschlangen E-Mails von Windows-SMTP Server ebenfalls auf d:\ ablegen lassen und nicht wie es standard ist unter "c:\inetpub\mailroot"
Neben dieses vermutlich bekannten Einstellungen bin ich heute über den Ordner "c:\WINDOWS\SoftwareDistribution\Download" gefunden. Dort werden die runtergelagenen ServicePacks, Hotfixes, etc. abgelegt und nach der Installation nicht gelöscht. Gerade nach dem Download eines ServicePacks ist dieser Ordner meistens sehr schnell sehr groß. Nach erfolgreicher Installation kann der Ordner ohne Probleme einfach wieder gelöscht werden und schon hat man genügend Platz (oder mehr Platz) auf der Platte
Heute habe ich mich ein wenig mit dem Thema PCI Compliance beschäftigt, da wir mit unserem DotNetNuke Shop einen Kunden an Worldpay angebunden haben. Mittlerweile ist es aber so, dass neben einem SSL Zertifikat auch ein PCI Compliance Scan vorgenommen werden muss.
Im Internet habe ich dafür auch einen ganz guten Dienst gefunden, der das online durchführt. Derzeit bin ich in der Testphase dieser Software - sieht im Augenblick aber sehr brauchbar aus. Besonders, da hier nciht nur ein Bereicht abgeliefert wird, sondern auch direkt Hilfstellung angeboten wird, wie man das Problem beheben kann. Jeder der ebenfalls eine Software für einen PCI Compliance Scan sucht - findet diese unter http://www.qualys.com.
Sollte jemand noch eine Alternative kenne, würde ich mich über eine kurze Nachricht oder einen Kommentar freuen 
Eine Meldung bei dem eigenen Kundenserver war "SSL Insecure Protocol Negotiation Weakness", das ein Problem bzw. ein erhöhtes Risiko mit SSL v2 darstellt. Dieses sollte / muss im Internet Information Server (IIS) deaktivert werden. In der Managementkonsole vom IIS gibt es dafür aber leider keinen Schalter und die Deaktivierung erfolgt manuell über die Registry. Wie man SSL v2 bei einem Windows Serverr mit IIS deaktivieren kann ist in der Knowledge Base von Microsoft nachzulesen: http://support.microsoft.com/kb/187498
Nach einem Reboot vom Server wird auch dieser Punkt vom PCI Scanner als "erledigt" dargestellt.
Gerade habe ich folgendes entdeckt:
http://www.iconlook.com
Ganz nett und hilfreich für den Entwickleraltag - an der Übersichtlichkeit muss wohl noch etwas gearbeitet werden aber das kommt bestimmt noch :)
Seit einiger Zeit arbeite wir sehr zufrieden mit Subversion, lediglich die bisher nicht bekannte fehlende Unterstützung von Visual Studio 2005 / 2008 war ein "Dorn im Auge". Jedoch gibt es auch dafür eine Lösung und die nennt sich AnkhSVN.
Dabei handelt es sich um eine AddOn für Visual Studio, dass die benötigte Funktionalität für die tägliche Arbeite direkt im Visual Studio zur Verfügung stellt. Per Kontextmenü kann man nun Projekte in Subversion übertragen oder ähnliches.
Das AddOn Clienttool "AnkSVN" für Visual Studio gibt es hier.
Das "I-Tüpfchen" für eine Website ist ein pasendes Favicon. Dotnetnuke hat bereits einen Platz in der Verzeichnisstruktur dafür vorgesehen.
Es ist ohne weiteres möglich im Root-Verzeichnis das Favicon von DNN zu ersetzen. Allerdings funktioniert dieses bei den aktuellen Version 4.9.0 nicht mehr. Es wird immer das Standard DNN-Favicon angezeigt. Zudem habe ich die Erfahrung gemacht, dass dieses oft nach einem DNN update überschrieben wird.
Wenn man im Portalverzeichnis (z.B. /Portals/xx/) die Datei Favicon.ico anlegt, dann wird diese Datei automatisch als Favicon für das aktuelle Portal verwendet.
Habe heute das Servicepack 1 für das Visual Studio 2008 und .NET 3.5 installiert. Nach der Installation konnte ich unter Visual Studio 2005 keine ASP.NET Anwendungen mehr debuggen. Als Fehlermeldung kam immer diese Meldung:
"Das Debuggen kann auf dem Webserver nicht gestartet werden. Authentifizierungsfehler bei der Kommunikation mit dem Webserver."
Das Durchsuchen der Supportdatenbank von Micrsoft hat mich dann auf folgenden Artikel "Fehler 401.1 beim Aufrufen einer Website, die integrierte Authentifizierung verwendet und mit IIS 5.1 oder IIS 6 gehostet wird" aufmerksam gemacht http://support.microsoft.com/kb/896861.
Bei mir hat diese beschrieben Methode zum Erfolg geführt:
- Klicken Sie auf Start und auf Ausführen, geben Sie regedit ein, und klicken Sie auf OK.
- Suchen Sie im Registrierungseditor den folgenden Schlüssel, und klicken Sie auf ihn:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
- Klicken Sie mit der rechten Maustaste auf MSV1_0, zeigen Sie auf Neu, und klicken Sie anschließend auf Wert der mehrteiligen Zeichenfolge.
- Geben Sie BackConnectionHostNames ein, und drücken Sie anschließend die [EINGABETASTE].
- Klicken Sie mit der rechten Maustaste auf BackConnectionHostNames. Klicken Sie dann auf Ändern.
- Geben Sie in das Feld Wert den Hostnamen bzw. die Hostnamen für die Sites ein, die sich auf dem lokalen Computer befinden, und klicken Sie danach auf OK.
- iisreset zum Neustarten des IIS ausführen.
Gerade beschäftige ich mich ein wenig mit dem Thema Caching und dabei kommt man ja irgendwie an Memcached nicht vorbei. Wollte memcached dabei als Service in Vista laufen lassen, doch beim Aufruf in der Commandozeile
c:\memcached\memcached.exe -d install
kommt ständig die Fehlermeldung:
"failed to install service or service already installed"
relativ schnell habe ich herausgefunden das es an den unzureichenden Rechten meines Benutzeraccounts unter Vista liegt. Damit es funktioniert muss man die Console als Administrator ausführen.
Dafür gibt es einen Shortcut: Wenn man bei der Ausführung der Anwendung Ctrl+Shift+Enter drückt, kann man sich den Weg über das Kontextmenü sparen.
Bei einem Server fand ich im Eventlog ständig folgenden Eintrag:
Ereigniscode: 3005 Ereignismeldung: Es ist eine unbehandelte Ausnahme aufgetreten. Ereigniszeit: 02.10.2008 01:22:41 Ereigniszeit (UTC): 02.10.2008 12:22:41 Ereignis-ID: cfc0fb0037c3473d9a93aed3556026c4 Ereignissequenz: 1658 Vorkommen: xx Ereignisdetailcode: 0 Anwendungsinformationen: Anwendungsdomäne: /LM/W3SVC/1/ROOT-xxxxxxxxx Vertrauensebene: Full Virtueller Anwendungspfad: / Anwendungspfad: x:\daten\websites\xxxxxx Computername: computer Prozessinformationen: Prozess-ID: 3028 Prozessname: w3wp.exe Kontoname: IrgendeinKonto Ausnahmeinformationen: Ausnahmetyp: CryptographicException Ausnahmemeldung: Zeichenabstände sind ungültig und können nicht entfernt werden. Anforderungsinformationen: Anforderungs-URL: http://xxxxx/WebResource.axd?d=yMHoWq6OlLLBSdXLzX0Yig2&t=633563938783503750
Anforderungspfad: /WebResource.axd Benutzerhostadresse: xxx.xxx.xx.xxx Benutzer: Ist authentifiziert: False Authentifizierungstyp: Threadkontoname: IrgendeinKonto Threadinformationen: Thread-ID: 5 Threadkontoname: IrgendeinKonto Identitätswechsel für: False Stapelüberwachung: bei System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) bei System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) bei System.Security.Cryptography.CryptoStream.FlushFinalBlock() bei System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) bei System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) bei System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler. ProcessRequest(HttpContext context) bei System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication. IExecutionStep.Execute() bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) *************************
Dieses Problem (oder besser gesagt diese Fehlermeldung) wird durch einen nicht existierenden <maschineKey> in der web.config ausgelöst. Nach der Erstellung eines gültigen <machineKey> ist die Fehlermeldung verschwunden.
Für das Visual Studio 2008 gibt es ein sehr cooles und nützliches Add-in. Den SnippetDesigner der es einem erlaubt recht einfach eigene Snippet's zu erstellen und zu verwalten. Einfach durch das Context-Menü kann aus einem Codeblock ein Snippet erstellt werden.
Zu finden gibt es das OpenSource Projekt auf der Seite Codeplex.com.
Die schon lange erwartete neue Version von DotNetNuke mit dem Codenamen "Cambrian" hat einen weiteren Meilenstein erreicht. Die Version RC1 wird bei der OpenForce Europe vorgestellt und an Gruppe von Personen verteilt.
Sehr cool ist der Support von jQuery und XHTML, WCAG and ADA compliance. Benutzerrechte können jetzt nicht nur gewährt sondern auch entzogen werden, was in manchen Situationen das Leben verinfachen dürfte. Einige von den neuen Features wurden in die Version 4.9 übernommen und sind dort schon verfügbar.
Eine Übersicht der neuen Features von DotNetNuke 5.0 gibt es z.B. hier.
Wann es eine öffentliche Version gibt, ist bis jetzt aber noch nicht bekannt...
Das ich im letzten Jahr eine Videoportal Software auf Basis von DotNetNuke mit WCF Services im Backend entwickelt habe, ist hier ja schon ein paar mal erwähnt wurden. Die bis jetzt aufgesetzten Videoportale können natürlich auch die hochgeladenen Videos in Flash konvertieren (sorry Silverlight ). Aktuell wird dafür das Tool FFMpeg genutzt, dass auch einen guten Dienst leistet und recht flexibel ist. Durch die asyncrone Entkopplung der einzelnen WCF Services ist auch so ein Command-Line Tool im Hintergrund kein wirkliches timing Problem.
Heute habe ich per Zufall aber gesehen, dass es nun .NET Lib für die Konvertierung gibt - getestet habe ich diese noch nicht - könnte aber evtl. eine denkbare Alternative sein.
Laut Website auch für den Einsatz in webbasierter Software gut geeignet. Die Lib ist kostenlos, wer den SourceCode haben möchte, muss dafür ein paar Dollar hinlegen.
Mehr Infos gibt es hier: http://www.intuitive.sk/fflib/
|