.NET-Software-Entwicklung - DotNetNuke - Business-Develoment
# Tuesday, November 18, 2008

AnkhSVN: Subversion Client AddOn Microsoft Visual Studio 2005, 2008

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.


Tuesday, November 18, 2008 10:50:24 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET | Allgemein | Software
# Wednesday, November 12, 2008

Favicon in Dotnetnuke verwenden

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.

 


Wednesday, November 12, 2008 7:00:57 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
ASP.NET | DotNetNuke
# Thursday, October 16, 2008

Visual Studio 2005 VS 2008 SP1 Authentifizierungsfehler beim Debuggen

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:

  1. Klicken Sie auf Start und auf Ausführen, geben Sie regedit ein, und klicken Sie auf OK.
  2. Suchen Sie im Registrierungseditor den folgenden Schlüssel, und klicken Sie auf ihn:
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. Klicken Sie mit der rechten Maustaste auf MSV1_0, zeigen Sie auf Neu, und klicken Sie anschließend auf Wert der mehrteiligen Zeichenfolge.
  5. Geben Sie BackConnectionHostNames ein, und drücken Sie anschließend die [EINGABETASTE].
  6. Klicken Sie mit der rechten Maustaste auf BackConnectionHostNames. Klicken Sie dann auf Ändern.
  7. 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.
  8. iisreset zum Neustarten des IIS ausführen.

Thursday, October 16, 2008 12:19:01 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET
# Tuesday, October 14, 2008

Install Memcached on Windows Vista

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.


Tuesday, October 14, 2008 4:18:59 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | Allgemein | ASP.NET
# Tuesday, October 07, 2008

Eventlog, CryptographicException, Anforderungspfad: /WebResource.axd

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.


Tuesday, October 07, 2008 11:17:06 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET
# Monday, October 06, 2008

Visual-Studio Add-in: SnippetDesigner

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.


Monday, October 06, 2008 12:03:16 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | Opensource | Software
# Sunday, October 05, 2008

DotNetNuke 5.0 RC1

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...


Sunday, October 05, 2008 11:37:08 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET | DotNetNuke
# Monday, September 08, 2008

Videoportal, Video konvertierung und FFMPEG

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/


Monday, September 08, 2008 1:45:45 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET 2.0 | ASP.NET | Software
# Monday, August 25, 2008

E-Mailadressen online validieren

Soeben habe ich eine wirklich nützlichen Dienst / Service auf webservicex.net gefunden. Diese Plattform hatte ich schon fast vergessen und bin nun durch einen Zufall darauf aufmerksam geworden.

Dort gibt es einen Web-Service, mit dem man E-Mailadressen online validieren - also auf Gültigkeit - prüfen kann. Wirklich eine praktischer Dienst ... und man muss sich nicht selber mit der Validierung rumschlagen.
Die Validierung geht natürlich über eine RegEx hinaus und überprüft beim Mailserver, ob es dort diese E-Mail wirklich gibt. Bei meine 20 Testläufen wurde mir zumindest immer ein korrektes Ergebnis zurück geliefert...

Zu erreichen unter der Adresse:
http://www.webservicex.net/ValidateEmail.asmx


Monday, August 25, 2008 1:07:41 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET
# Friday, August 22, 2008

SQL Server 2008 Modifizieren einer Tabelle

Derzeit beschäftige ich mich ein wenig mit dem SQL-Server 2008 und wollte einen ganz simple Geschichte machen: Eine bestehende Tabelle ein wenig anpassen. Beim Speichern der Daten kam aber vom Microsoft SQL Server Management Studio immer die Meldung, dass die Tabelle nicht gespeichert werden kann - mit dem Kommentar: "Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern"

Die Lösung dafür ist eigentlich recht simple: Man öffnet im SQL Server Managementstudio den Menüpunkt Extras -> Optionen; geht dann in den Bereich Designer -> Tabellen- und Datenbank-Designer und deaktiviert dort unter "Tabellenoptionen" die Checkbox "Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern".

Anschließend kann man wie gewohnt die Tabelle modifizieren und auch speichern....


Friday, August 22, 2008 1:33:24 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
Datenbank | SQL Server
# Thursday, August 07, 2008

Google Analytics und eine Subdomain mit dem Namen google

Gerade kam ein Kunde mit folgendem Problem auf uns zu:

Eine absolut identische Seite, gleiches System, gleicher inhalt. Einmal wurde die Seite über http://www.mydomain.de aufgerufen und einmal über http://google.mydomain.de. Der zweite Auruf wurde aber bei Google-Anaytics nie getrackt. Der Aufruf zu Analytics wurde erst gar nicht durchgeführt....

Nach kurzer Debugphase vom JavaScript (urchin.js) war der Fehler schnell gefunden.  Das Script fragt ab, ob die Aufruf von einer Seite kommt, die irgendwie ".google.", "google.", usw. binhaltet. Dann wird das Script nicht weiter ausgeführt.



Thursday, August 07, 2008 5:09:02 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
Allgemein | ASP.NET
# Tuesday, July 08, 2008

Debug DotNetNuke Scheduler

Das Debuggen von DotNetnuke Schedulern ist nicht so ganz einfach. Mit einem Break-Point und F5 ist es leider nicht getan an dieser Stelle, da die einzelnen Scheduler in einen separaten Thread laufen.
Auch der Trink um Windows Services zu debuggen - das anhängen des Debuggers an den Prozess - funktioniert in diesem Fall einfach nicht.

Es gibt aber einen Weg, den Debugger per SourceCode-Aufruf zu starten. Das geht ganz einfach und ist mit einer Zeile erledigt:

System.Diagnostics.Debugger.Launch();

Dieser Aufruf bewirkt, dass man eine neue oder eine existierende Instanz von Visual Studio auswählen kann, um anschließend durch den Code zu steppen.

Ein paar weitere Infos gibt es bei Mircosoft-MSDN hier 


Tuesday, July 08, 2008 6:53:12 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET | DotNetNuke
# Saturday, July 05, 2008

ASP.NET ajax GenerateScriptType und eigene Komplexe Typen

Ich beschäftige mich gerade mal etwas intensiver mit dem AJAX-Framework - eigentlich ja schon ein alter Hut. Dabei habe ich ein DotNetNuke-Modul, dass zu einem ASMX-WebService Daten versendet und ein Ergebnis zurück bekommt.

namespace G.Modules.LicCalc
{

  [WebService(Namespace = http://tempuri.org/)] 
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [ScriptService]
  public class CalculatorService : System.Web.Services.WebService
  {

    [WebMethod()]
    public string HelloWorld(LicCalcInfo info)
    {
       return "Hello World" + info.LinuxLicense.ToString();
    }
  }
 
}

Passend dazu gibt es eine Klasse "LicCalcInfo" - die wie DotNetNuke-typische Info-Class aufgebaut ist

using System;

namespace GMS.Modules.LicCalc.Business
{
public class LicCalcInfo
{
private int _windowsLicense;
private int _linuxLicense;

public int LinuxLicense
{
get { return _linuxLicense; }
set { _linuxLicense = value; }
}

public int WindowsLicense
{
get { return _windowsLicense; }
set { _windowsLicense = value; }
}

}
}

Wenn ich jetzt über JavaScript versuche die Methode "HelloWorld" aufzurufen und den Parameter LicCalcInfo übergeben möchte, wird bei der Erstellung der Klasse immer eine JavaScript-Exception ausgelöst. Das JavaScript sah so aus:

function HelloWorld()
{

var info = new LicCalcInfo();
info.LinuxLicense = 10;
DocuSnap.Modules.LicCalc.CalculatorService.HelloWorld(info, SucceededCallback);

}

function SucceededCallback(result, eventArgs)
{
    alert(result);
}

Das ganze funktioniert aber nur, wenn die Klasse "LicCalc" direkt in der ASMX Datei definiert wurde und sich außerhalb des Namespaces befindet. Als extern definierte Klasse habe ich die Einbindung nie geschafft. Die Lösung dabei ist aber mal wieder relativ einfach: Bei der Erzeugung des Objektes in JavaScript muss das Objekt mit dem kompletten Namespace angesprochen werden.. das hat mir dann ein Blick in die automatisch gernierte JavaScript-Datei veraten. Der Aufruf zur Erzeugung muss dann so geschrieben werden:

var info = new DocuSnap.Modules.LicCalc.Business.LicCalcInfo();

Dann kann die Klasse auch in JavaScript erzeugt werden und die Verarbeitung wird erfolgreich durchgeführt.


Saturday, July 05, 2008 12:57:24 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | AJAX | ASP.NET | DotNetNuke
# Thursday, July 03, 2008

DotnetNuke Game / Battleship Module

Eigentlich habe ich ja ein paar Module (News, FAQ) für DotNetNuke gesucht - dabei bin ich dann über ein Game gestolpert, dass jeder von uns kennt und auch gerne spielt: Schiffe versenken :)

Auf der Seite http://www.donein.net/Default.aspx?tabid=58 gibt es sowohl einen Downloadlink als auch die Möglichkeit, das Spiel direkt mal zu testen!

Viel Spaß :)


Thursday, July 03, 2008 6:08:23 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | ASP.NET | DNN - Module | DotNetNuke
# Wednesday, June 25, 2008

Subversion 1.5 auf Windows Server / VisualSVN Server 1.5 Release

Eine aktualisierte Version von VisualSVN Server - ein Installation-Package für Subversion auf einem Windows Server 200x - steht zum Download bereit. Diese MSI-Paket installiert einen Subversionen-Server in der Version 1.5.
Auch ein Update ist ohne Probleme möglicht, lediglich die Konvertierung muss auf das neuste Subversionformat durchgeführt werden.

Hier ist der direkte Link zum Download:  http://www.visualsvn.com/server/changes/1.5/

Ich bin mittlerweile wirklich dankbar für dieses Stück Software, da die Installation wirklich simple ist :)


Wednesday, June 25, 2008 12:57:18 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
Allgemein | Software
# Monday, June 09, 2008

IE und die Option "Anmeldedaten merken"

Wer sich wundert das die Funktion "Anmeldedaten merken" im IE nicht funktioniert und sich ebenfalls darüber ärgert, für den habe ich nun eine Lösung (vielmehr habe ich im Web eine gefunden). Im Blog auf www.dotnetnuke.com habe ich einen Beitrag gefunden der erklärt, wieso, weshalb, warum und was man dagegen tun kann.
Hier ist der Beitrag...


Prinzipell müssen zwei Einträge in der web.config angepasst werden, damit die Funktion das macht, was sie soll:

<forms name=".DOTNETNUKE" protection="All" timeout="120" cookieless="UseCookies" />

<add key="PersistentCookieTimeout" value="20160" />


Der "Fehler" liegt auch weniger an DNN sonder viel mehr an der Behandlung von Cookies unter ASP.NET 2.0.


Monday, June 09, 2008 9:00:43 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET 2.0 | ASP.NET | DotNetNuke
# Wednesday, May 21, 2008

Ein Videoportal auf Basis von DotNetNuke, WCF und MS - Message Queue

Im Netz gibt es zwei Seiten mutlimedia.katholisch.de und www.kirche.tv. Beiden Seiten wurde mit DotNetNuke umgesetzt und sollen so eine Art YouTube darstellen. Natürlich sehr stark spezialisiert auf den Bereich der katholischen Kirche.

Die Architektur von diesen Videoportalen ist recht interessant, da hier beide Portale (getrennte Installationen) aus einem gemeinsamen Datenpool bedient werden. Der Lösungsansatz ist DotNetNuke mit WCF zu verheiraten. Die Module zur Darstellung von Videos, zum Upload von Videos und natürlich die Administration von Videos greifen dann nicht wie sonst üblich auf den DataProvider zurück, sonder befragen einfach die laufenden WCF-Services.
Die eigentlich "anzeige Module"  - sprich die *.ascx" - greifen aber wie gewohnt auf Controller-Klassen zu, durch die dann eine Kommunikation mit den WCF-Services ermöglicht wird. In den Controllern kann man dann z.B. auch Caching und ähnliches einbauen.

Neben der WCF wurde auch die MSMQ (Message Queue) stark genutzt, was gerade im Zusammenspiel mit der WCF sehr viel freude bereitet und denkbar einfach ist. Der große Vorteil bei der Verwendung von MSMQ ist natürlich, dass Prozesse asynchron ablaufen können und der Benutzer nicht warten muss, bis der komplette Workflow-Prozess dahinter abgerabeitet ist.
Ein kurzes Beispiel um das zu verdeutlichen: Ein Anwender macht einen Video - Upload durch das DNN-Modul; dieses macht eine erste Validierung der Daten und wenn diese in Ordnung sind, wird eine Nachricht mit allen Informationen in eine transaktionale Message Queue übertragen. Damit ist der Job für das DNN-Modul zunächst erledigt. Ein WCF-Service der permanent die Queue "im Auge" hat, holt die Nachricht ab und bearbeitet diese nun weiter - Daten werden in die Datenbank geschrieben, eine Nachricht zur Konvertierungs Queue abgesetzt, etc.). Gerade bei der Konvertierung von Videos kommt man um einen asynchron Verarbeitung nicht herum, da große Dateien längere Zeit in anspruch nehmen,. Die Konvertierung erfolgt übrigens in das Format Flash. Wenn das Video konvertiert wurde, wertet ein diesmal ei NT-Dienst das Ergebnis aus und berichtet den Status. Für die Konvertierung werden externe Programm eingesetzt und deshalb überwacht das ein NT-Dienst. [Dieser Workflow ist nur sehr grob beschrieben und beinhaltet noch deutlich mehr Schritte]

Die beiden Portale laufen nun seit gut 6 Monaten sehr zuverlässig, stabil und schnell. Ein schöner Beweis das man mit DotNetNuke als Basis wirklich so ziemlich alles umsetzen kann und das man DotNetNuke auch wunderbar mit anderen Technologien nutzen kann.

Wer ausführlichere Informationen dazu haben möchte, kann sehr gerne mit mir Kontakt aufnehmen...





Wednesday, May 21, 2008 1:13:09 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET 3.0 | ASP.NET | DNN - Module | WCF
# Saturday, May 17, 2008

Bei Google MAPS GEO-Koordinaten mit C# abfragen

Für ein aktuelles Projekt benötige ich von Plätzen / Anschriften die GEO-Koordinaten. Da zur Visualisierung so wieso Google-Maps später eingesetzt werden soll, liegt natürlichdie Google-API nahe. Dafür habe ich heute ein C# Klasse entwickelt, mit der man einfach über einen HTTPRequest das Ergebnis in XML zurück geliefert bekommt. Die Klassen analysiert das Ergebnis von Google auf Fehler und parst die Werte für Latitude und Longitude.

Zunächst habe ich mir das Core-Modul von DotNetNuke "MAPS" angeschaut, das ebenfalls die Google-Maps nutzt. Es funktioniert recht gut - nur war ich von der vorgehensweise docht etwas erschrocken: Da wird das Ergebnis wirklich noch mit String-Funktionen (Find, Left, SubString) auseinandergenommen um an die Werte zukommen. Hallo? Wofür gibt es einen XML-Parser, der für solche Aufgaben entwickelt wurde und auch deutlich schneller ist, bei der Analyse von XML.
Das aber nur als Zwischenbemerkung an dieser Stelle ;-)

Bei der Entwicklung der Klasse hatte ich zunächst Probleme mit XPath die Werte auszulesen. Da ich ja diesmal gezielt ein paar Daten aus dem XML-File benötige und nicht wirklich Node für Node durchgehen muss (wollte), war XPath meine erste Wahl. Mache das aber nicht so häufig und hatte zuerst schwirigkeiten, weil die Abfrage SelectSingleNode immer einen null-Value zurück lieferte. Nach kurzer Zeit viel mir dann aber auf, das Google einen Namespace im XML-Dokument stehen hat - so wie es ja eigentlich auch sein soll. Diesen Namespace muss aber bei einer XPath-Abfrage auf jeden Fall vorher dem Parser bekannt geben. Dann funktioniert die Abfrage auch ohne Probleme. Das sieht dann in etwa so aus:

XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
nsManager.AddNamespace("gm", "http://earth.google.com/kml/2.0");

///Es wird versucht den Statuscode zu ermitteln
XmlNode nodeStatus = xmlDoc.SelectSingleNode("gm:kml/gm:Response/gm:Status/gm:code", nsManager);

In der Abfrage hier wird der Status-Cide abgefragt, um zu überprüfen ob die Anfrage erfolgreich war. xmlDoc ist dabei mein XML-Parser ( System.Xml.XmlDocument).

Die fertige C# Klasse steht hier zum Download bereit:

C#-GoogleMaps-API-GEO-Koordinaten.zip (2,59 KB)
Saturday, May 17, 2008 5:37:36 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET 3.0 | ASP.NET | Opensource
# Friday, May 16, 2008

T-SQL - SELECT TOP durch einen Parameter beinflussen

Heute stellte sich mir die Aufgabe eine simple Stored Procedures zu schreiben, die x Datensätze aus einer Tabelle liest. Kein Paging sondern wirklich nur eine ganz bestimmte Anzahl - halt die TOP x Datensätze.

Also habe ich folgende SP geschrieben:

CREATE PROCEDURE dbo.Get_Top
@topCount int
AS
    SELECT TOP @topCount
    id, col1, col2, col3
   FROM TestTable

 

Leider wurde mir dabei immer ein Syntaxfehler ausgeworfen - die Nutzung von dem Parameter innerhalb vom SQL-Statement scheint dem SQL-Server 2005 nicht zu schmecken. Also erst mal etwas gegooglet.... und zum guten Schluß stelle sich raus das die Lösung so einfach ist - aber darauf kommt man wohl zunächst nicht. Es reicht aus um das @topCount einfach eine Klammer zu setzen und schon kann der SQL-Server die SP verarbeiten.

Die lauffähige Stored Procedures für den SQL-Server sieht dann so aus:

CREATE PROCEDURE dbo.Get_Top
@topCount int
AS
    SELECT TOP (@topCount)
    id, col1, col2, col3
   FROM TestTable

Darauf muss man erst mal kommen ;-)


Friday, May 16, 2008 12:02:04 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
Allgemein | Datenbank
# Thursday, April 24, 2008

ASP.NET Ajax das Updatepanel und der FCKEditor

Heute habe ich versucht, den FCKEditor innerhalb eines ASP.NET Ajax Updatepanel dazu zu bewegen mir auch den eingegebenen Text auszuhändigen. Normalerweise ist ja die Einbindung und Nutzung vom FCKEditor innerhalb von DotNetNuke denkbar einfach. Also wie gewohnt die Arbeitsschritte ausgeführt und mal mutig F5 gedrückt. Leider mit dem Resultat, dass die Eigenschaft Text vom FCKEditor nach einem partial PostBack immer leer war und der Text zunächst mysteriös verschwand. Die Suchmaschine meines Vertrauen hat mir auch prompt ein paar Hinweise zu dem Thema ausgespuckt - gut, ich war wohl nicht alleine auf dieser Welt.

Auf der Seite http://jlcoady.net/archive/2007/03/30/fckeditor-work-inside-updatepanel wurde ein Lösungsansatz vorgestellt, der aber leider so nicht ganz funktioniert - zumindest im meinem Fall nicht.

private void Page_Load(object sender, EventArgs args)
{
   Page.ClientScript.RegisterOnSubmitStatement(
   editor.GetType(),
   "editor",
   "FCKeditorAPI.GetInstance('" + editor.ClientID + "').UpdateLinkedField();");
}

Dieser Code-Snippet bracht mich nicht weiter, denn der Text wurde immer noch nicht zurück geliefert, nach einem Postback innerhalb vom UpdatePanel.

Auch der folgende Code sollte angeblich funktionieren, konnte aber meine FCKEditor auch nicht wirklich übereden, mal endlich seine Arbeit aufzunehmen.

this.Page.ClientScript.RegisterOnSubmitStatement(
this.GetType(),
"AjaxHack",
"for ( var i = 0; i < parent.frames.length; ++i ) if ( parent.frames[i].FCK ) parent.frames[i].FCK.UpdateLinkedField();"
);

Wie sich nun herausstellt, sind die Scripte vollkommen in Ordnung und funktionieren auch. Nur ist es empfehlenswert die Methode "RegisterOnSubmitStatement" nicht als Methode der Page aufzurufen sondern als Methode vom ScriptManager. Das sieht dann so aus:

ScriptManager sm = ScriptManager.GetCurrent(Page);
if (sm != null)
{
ScriptManager.RegisterOnSubmitStatement(this.Page,
this.GetType(),
"FCKAjaxHack",
"for ( var i = 0; i < parent.frames.length; ++i ) if ( parent.frames[i].FCK ) parent.frames[i].FCK.UpdateLinkedField();");
}

Oh Wunder, jetzt funktioniert auch der FCKEditor in der Zusammenstellung von DotNetNuke, ASP.Net Ajax und dem Updatepanel!


Thursday, April 24, 2008 1:31:00 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET 2.0 | AJAX | ASP.NET | DotNetNuke