Tags: , , | Categories: Administration, ASP.Net, Vista, Silverlight Posted by Christoph on 12/23/2008 1:04 PM | Comments (3)

Bei mir bringt der ASP.Net Development Server (der für die Entwicklung von Silverlight Anwendungen extrem praktisch ist) im Internet Explorer immer einen Fehler, dass die Seite nicht gefunden werden kann (URL: http://localhost:64720/Default.html). Die gleiche URL funktioniert jedoch im Firefox problemlos, und auch im IE funktioniert die URL, wenn man anstatt localhost die 127.0.0.1 benutzt.

Das Problem liegt ein einem Eintrag in der hosts Datei, der für IPV6 gilt, jedoch hört der DevServer nicht auf IPV6.

also: ab in die c:\Windows\System32\Drivers\etc\hosts und vor die "::1 localhost" eine "#".
Damit ist das Problem behoben :-)

 Tipp: am einfachsten gehht das Ändern der hosts, wenn man die in einen anderen Ordner kopiert, ändert, und wieder zurückkopiert. Dann hat man nur einen UAC Dialog.

Tags: , , , | Categories: ASP.Net, Javascript, JQuery Posted by Christoph on 10/1/2008 1:51 PM | Comments (0)

Mit dem .Net 3.5 SP1 ist eine neue sehr nützliche Funktion zum asp:ScriptManager hinzugekommen: Man kann nun automstisch die benötigten Javascript Dateien zusammenfügen lassen  (incl. die für das Ajax Control Toolkit benötigten!)

Dazu müssen folgende Schritte durchgeführt werden:

  1. mit dem Script Reference Profiler auflisten, welche Dateien überhaupr benötigt werden:
    • den Profiler von Codeplex herunterladen
    • die DLL im Projekt als Referenz anlegen
    • in der index.aspx ganz oben folgende Referenz einfügen:
      <%@ Register Assembly="ScriptReferenceProfiler" Namespace="ScriptReferenceProfiler" TagPrefix="asp" 
      %>
    • auf der Seite dann den Profiler anzeigen:
      <asp:ScriptReferenceProfiler runat="server" />
  2. Nun können die benötigten Dateien zum asp:ScriptManager hinzugefügt werden:
    <asp:ScriptManager ID="sm1" runat="server"
        EnableScriptGlobalization="false"
        EnableScriptLocalization="false"
        LoadScriptsBeforeUI="false"
        ScriptMode="Release" >
        <CompositeScript ScriptMode="Release">
            <Scripts>
                <asp:ScriptReference name="MicrosoftAjax.js"/>
                <asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
                <asp:ScriptReference Path="~/Include/js/jquery-1.2.6.min.js"  />
                <asp:ScriptReference Path="~/Include/js/thickbox.31.de.js" />
                <asp:ScriptReference Path="~/Include/js/jquery.tooltip.js" />
                <asp:ScriptReference Path="~/Include/js/my.js" />
            </Scripts>
        </CompositeScript>
    </asp:ScriptManager>

Damit werden alle benötigten Dateien "am Stück" geladen.

Tags: , , , | Categories: ASP.Net, VB.Net Posted by Christoph on 10/1/2008 12:23 PM | Comments (0)

Der IIS 7 hat nun endlich ein schönes Rewrite Modul bekommen.

Nun ergibt sich aber das Problem, das sowohl beim Postback, als auch, was natürlich damit zusammenhängt, im Updatepanel jedesmal die falsche Zielurl benutzt wird.

Dies lässt sich so beheben:

1) eine neue form.browser im /App_Browsers anlegen, die so aussieht:

<browsers>

	<browser refID="Default">
		<controlAdapters>
			<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
					 adapterType="FormRewriterControlAdapter" />
		</controlAdapters>
	</browser>

</browsers>

2) eine FormRewriterControlAdapter.vb im Projekt hat, die so aussieht:

Imports Microsoft.VisualBasic

Public Class FormRewriterControlAdapter
	Inherits System.Web.UI.Adapters.ControlAdapter

	Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
		MyBase.Render(New RewriteFormHtmlTextWriter(writer))
	End Sub

End Class

Public Class RewriteFormHtmlTextWriter
	Inherits HtmlTextWriter

	Sub New(ByVal writer As HtmlTextWriter)
		MyBase.New(writer)
		Me.InnerWriter = writer.InnerWriter
	End Sub

	Sub New(ByVal writer As System.IO.TextWriter)
		MyBase.New(writer)
		MyBase.InnerWriter = writer
	End Sub

	Public Overrides Sub WriteAttribute(ByVal name As String, ByVal value As String, ByVal fEncode As Boolean)
		If (name = "action") Then
			Dim Context As HttpContext = HttpContext.Current
			If Context.Items("ActionAlreadyWritten") Is Nothing Then
				value = Context.Request.RawUrl
				Context.Items("ActionAlreadyWritten") = True
			End If
		End If
		MyBase.WriteAttribute(name, value, fEncode)
	End Sub

End Class

Ich habe diesen Tipp in Scott Gu’s Blog bei “Handling ASP-NET PostBacks with URL Redirecting” gefunden

Tags: , , | Categories: Administration, ASP.Net Posted by Christoph on 4/29/2008 1:42 PM | Comments (0)

wenn man den Temporären Folder der ASP.Net Webs verschieben möchte, um z.B. eine andere dafür Platte zu benutzen, kann man in der

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

folgenden (bereits bestehenden) XML Node erweitern:

<compilation tempDirectory="F:\temp\aspnet_temp">

per Default wird der C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files als Temp-Folder benutzt.

Seltsamerweise gilt dieser Eintrag für ALLE Frameworks >=  2.0

ACHTUNG: der (Text)Editor muss dazu mit "Als Administrator ausführen" gestartet werden!

Tags: , , , , | Categories: Administration, ASP.Net, Windows 2008 Posted by Christoph on 3/27/2008 10:42 AM | Comments (1)

Um das sehr hilfreiche URLRewriting.Net auf einem IIS7 im Integrierierten Modua laufen zu lassen, muss eine Änderung in der Web.Config vorgenommen werden:

Die Einstellung:

<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />

muss für den IIS7 und den Integrierten Modus an folgende Stelle verschoben werden:

<system.webServer>
     <modules>
        <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    <modules>
<system.webServer>

und dann läuft die Website auch im Integrierten  Modus von ASP.Net

        

Diesen Tipp habe ich hier gefunden:
http://groups.google.de/...

Tags: , | Categories: ASP.Net, Javascript Posted by Christoph on 1/25/2008 3:37 PM | Comments (0)

Dazu habe ich auf Jon Galloway's Blog folgende recht Interessanten Links gefunden:

Tags: , , | Categories: ASP.Net Posted by Christoph on 1/17/2008 4:57 PM | Comments (0)

Alle Controls erben von folgender Klasse:

Public Class ContentControl

    Inherits System.Web.UI.UserControl

    Public Function Translate(ByVal Text As String) As String
        Return TextTools.TranslateText(Text, MyLang)
    End Function

    Public Sub TranslateMe(ByVal Ctrl As Control)

        If TypeOf Ctrl Is RadioButton Then
            Dim Rbl As RadioButton = Ctrl
            Rbl.Text = Translate(Rbl.Text)
        ElseIf TypeOf Ctrl Is HyperLink Then
            Dim Hyp As HyperLink = Ctrl
            Hyp.Text = Translate(Hyp.Text)
        End If

    End Sub

End Class

Wenn Texte im Backend übersetzt werden, ist es sehr praktisch, wenn diese im Markup definiert werden können:

<fieldset>
    <legend><asp:RadioButton ID="rbCC" runat="server" GroupName="pay" Text="Kreditkarte" /></legend>
</fieldset>

Damit muss ich in der PageLoad Methode der Controls nurnoch TranslateMe(rbCC) aufrufen, und der im Markup angegebene Text würd übersetzt, und wieder in das Control geschrieben.

Zusätzlich kann ich auch im Markup direkt <%=Translate("Name")%> benutzen.

Tags: , , , | Categories: AJAX, ASP.Net, Javascript Posted by Christoph on 1/16/2008 6:32 PM | Comments (0)

Wenn ASP.Net Ajax benutzt wird, kann mit Sys.Debug.trace(text) kann im Javascript beliebige Objekte ausgeben lassen .
(ACHTUNG: Gross/Kleinschreibung beachten).

Diese landen entweder in einer Textbox mit id=TraceConsole oder im Firebug / Web Development Helper

Zusätzlich muss in der Web.Config <compilation debug="true"> angegeben sein, und der Scriptmanager muss ScriptMode="Inherit" haben.

Dann funktionieren folgende Aufrufe im Javascript:

Sys.Debug.trace(text);
Sys.Debug.traceDump(object, name);

Weitere Informationen gibt's auch hier:
http://weblogs.asp.net/romannikitin/archive/2007/11/22/sys-debug-in-asp-net-ajax-framework.aspx

Tags: , | Categories: ASP.Net Posted by Christoph on 1/16/2008 1:43 PM | Comments (0)

Gelegentlich möchte man den Zugriff auf eine Website in mehrere Threads unterteilen. Dies kann z.B. bei einem Downloadmanager oder Website Grabber der Fall sein. In der Standardeinstellung von .Net sind die Zugriffe auf eine Http Ressource allerdings auf 2 limitiert. Es werden also, unanhängig von der anzahl der verwendeten Threads,  maximal 2 Verbindungen zu dem Webserver aufgebaut.
Dem kann jedoch abgeholfen werden, wenn man der statischen Eigenschaft DefaultConnectionLimit der ServicePointManager Klasse einen höheren Wert zuweist. Hier sollte man allerdings ausgiebig testen. Eine zu hohe Einstellung kann sich negativ auf die Performance auswirken.

System.Net.ServicePointManager.DefaultConnectionLimit = 4

(gefunden auf http://blog.data-workx.de)

Tags: , , | Categories: AJAX, ASP.Net Posted by Christoph on 1/15/2008 11:01 AM | Comments (0)

Für den täglichen Programmieralltag habe ich ein paar praktische Spickzettel zusammengetragen:

Viel Spass damit !