Categories: Administration, Windows 2008, IIS Posted by Christoph on 10/20/2009 1:27 PM | Comments (0)
Der FTP-Dienst vom IIS7 (Windows 2008) holt sich die Gruppenzugehörigkeit von Windows-Usern nur alle 15 Minuten. Das macht natürlich ein Testen der Konfiguration recht schwer. Mit folgender Kommandozeile kann man dem FTP-Dienst das Caching der Userdaten abgewöhnen, und die Gruppenzugehörigkeit wird direkt benutzt: cd /d "%SystemRoot%\System32\Inetsrv" Appcmd.exe set config -section:system.ftpServer/caching /credentialsCache.enabled:"False" /commit:apphost Net stop FTPSVC Net start FTPSVC
Tags: , , | Categories: ASP.Net, VB.Net Posted by Christoph on 10/16/2009 3:28 PM | Comments (0)
Für die Benutzung von SEO freundlichen URLs (Search Engine Optimisation) benutze ich das URL Rewriting Modul des IIS (-> http://www.iis.net/extensions/URLRewrite). Wenn nun ein Datapager z.B. an ein Listview Control gebunden wird, benutzt dieser leider als Linkadresse nicht die “schöne” URL, sondern die aus dem Rewriting entstehende URL. Man kann dem Datapager aber mit dieser Funktion die neuen (schönen) Links beibringen: Private Sub FixPagerURLs(ByVal Pager As DataPager) For Each Pag As DataPagerFieldItem In Pager.Controls For Each Ctrl In Pag.Controls If TypeOf Ctrl Is HyperLink Then Dim Hyp As HyperLink = Ctrl Dim Req = Hyp.NavigateUrl.Replace(Request.Path, "").Replace("?", "") Dim Params = Req.Split("&") Dim NewPage = (From item In Params Where item.StartsWith("page")).FirstOrDefault Dim URL = Request.RawUrl If URL.Contains("?") Then URL = URL.Substring(0, URL.Inde... [More]
Tags: , , , | Categories: ASP.Net, Javascript, JQuery Posted by Christoph on 10/13/2009 7:07 PM | Comments (0)
Wenn man in einem datengebundenen Control (Repeater, Datagrid, ...) einen Radiobutton benutzt, der einen Gruppennamen hat, also innerhalb des Controls immer nur ein Button angewählt sein soll, bekommt man das Problem, dass asp.net dem RadioButton einen eindeutigen Namen gibt. Damit wird, wenn ich eine neue Radiobox anwähle, die alte nicht deselektiert. Mit diesem kleinen jQuery Script kann man die Funktion per Javascript wieder "nachbauen": <script language="javascript" type="text/javascript"> //<![CDATA[ jQuery(document).ready(function() { jQuery(":radio").change(function() { var sel = this.id; jQuery(":radio").each(function() { if (sel != this.id) { jQuery(this).removeAttr("checked"); } }); }); }); //]]> </script>
Tags: | Categories: Administration Posted by Christoph on 9/29/2009 6:35 PM | Comments (0)
Microsoft hat eben den Kostenlsen Virenschutz "Microsoft Security Essentials" (der in der Betaphase "Morrow") veröffentlicht. Ich benutze die Beta bereits mehrere Wochen und bin sehr zufrieden mit den Leistungen des Tools. Da ich in meinem Netzwerk auch andere Virenscanner laufen habe, kann ich bisher noch kein Fehlverhalten entdecken, und werde das Tool auch weiterhin auf meinem Atbeitsplatz einsetzen. Für weitere Informationen und den Download geht's hier weiter
Tags: , , | Categories: ASP.Net, Silverlight Posted by Christoph on 7/23/2009 11:21 AM | Comments (0)
Wwnn Silverlight einen Webservice über SSL benutzen soll, müssen dazu folgende 3 Dinge beachtet werden: 1) eine clientaccesspolicy.xmlim Webroot haben: <?xml version="1.0" encoding="utf-8" ?> 2) eine crossdomain.xml im Webroot haben: <?xml version="1.0"?> 3) im Silverlight: ich benutze dazu meisst eine Statische Methode, die den Webservice erstellt, um die jeweilige URL vom System an die Umgebung anpassen zu können. Public Shared Function GetWebservice() As BackendService.BackendServiceSoapClient '--Detect Current URL Dim Url As String = String.Format("{0}BackendService.asmx", Settings.RootURLAll) Dim Binding As ServiceModel.BasicHttpBinding If Settings.RootURLAll.IndexOf("https") > -1 Then Binding = New ServiceModel.BasicHttpBinding(ServiceModel.BasicHttpSecurityMode.Transport) With {.MaxReceivedMessageSize = 5000 * 1024} Else Binding = New ServiceModel.... [More]
Tags: | Posted by Christoph on 6/22/2009 11:41 AM | Comments (0)
Ein Traum wird wahr :-) Die Microsoft TechEd 2009 wird in Berlin (also hier) durchgeführt. Was die Anreise betrifft: Einfacher geht's dann nicht mehr.  
Tags: | Categories: VB.Net Posted by Christoph on 5/22/2009 6:18 PM | Comments (0)
Wenn man eine List(of Integer) in ein String umwandeln möchte, benötigt man zuerst einen Helper, der die Formatierung eines einzelnen Items vornimmt: Private Shared Function I2S(ByVal Nummer As Integer) As String Return Nummer.ToString End Function und diesen kann man dann benutzen, um eine komplette Liste in das gewünschte Zielformat zu konvertieren: Dim Arr1 as New List(of Integer) Dim Arr2 As List(Of String) = Arr1.ConvertAll(New Converter(Of Integer, String)(AddressOf I2S)) Return String.Join(", ", Arr2.ToArray)
Tags: | Categories: ASP.Net, VB.Net Posted by Christoph on 4/7/2009 1:14 PM | Comments (0)
Wenn man Daten über eine Webseite zu Excel exportieren will, geht das eigentlich ganz einfach, indem man eine HTML Seite ausgibt, die eine Tabelle enthält, und dann den Contentyp setzt. Dazu kann man noch den Tabellenzellen bestimmte CSS Attribute mitgeben, so dass die dann von Excel auch passent erkannt werden. Hier mal ein ganz grober Dummy, der aber das Vorgehen veranschaulicht: Response.Clear()Response.ClearHeaders()Response.ContentEncoding = Encoding.DefaultResponse.Buffer = TrueResponse.ContentType = "application/vnd.ms-excel"Response.AddHeader("Content-Disposition", "inline; filename=Statistik.xls")Dim Out As New StringBuilderOut.Append("<html>")Out.Append("<style>")Out.Append("body,th,td{font-size:10px;font-family:arial;color:black;}")Out.Append("table{mso-displayed-decimal-separator:""\,"";mso-displayed-thousand-separator:""\."";}")Out.Append("... [More]
Posted by Christoph on 4/3/2009 5:18 PM | Comments (0)
Um es einem möglichen Anfreifer etwas zu erschweren, einen CSRF (Cross Site Request Forgery) durchzuführen, sollte man dem Viewstate einen eindeutigen User Key geben, den das .Net Framework dann automatisch zur Validierung der zum Server zurückgesendeten Daten benutzt. Das Ganze geht recht einfach, indem man auf den jeweiligen Seiten (.aspx) folgenden Code hinzufügr: Private Sub Index_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init ViewStateUserKey = Session.SessionID End Sub Ich habe diesen Hinweis bei Scott Hanselman und Phil Haack gefunden
Tags: | Posted by Christoph on 3/25/2009 5:47 PM | Comments (0)
geht recht einfach mit folgendem Code: ' DateTime in UTCDateTime dim utcDate = DateTime.SpecifyKind(DateTime.Parse("2008-11-01T19:35:00.0000000Z"), DateTimeKind.Utc) ' create new TimeZoneInfoTimeZoneInfo dim destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time") ' convert to local date in destination TimeZoneDateTime dim localDate = TimeZoneInfo.ConvertTimeFromUtc(utcDate, destinationTimeZone) die nötigen IDs gibts in der Registry unter: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones: gefunden habe ich den Beitrag hier