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.
2b3c8a1b-fabd-4bc8-9047-294a4079702a|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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: 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" />
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.
70aa8773-7702-4cb5-a089-8476b10a1247|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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
9a50b074-9e9f-4d90-8d09-3a7526beb7e1|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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!
b3d2fa42-9fac-4cd4-b52b-5bf0606aba14|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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/...
8b650795-bb20-4dd2-9bdb-6695a528c0d4|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
Dazu habe ich auf Jon Galloway's Blog folgende recht Interessanten Links gefunden: NeatUpload (ASP.Net Komponente, Kostenlos!) http://www.brettle.com/neatupload SWFUpload (Flash & Javascript, Kostenlos!) http://swfupload.org/
166544c9-9219-49e6-bf1c-e770f011e986|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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.
2b205eec-64e1-4dc8-84fe-a603501f1df8|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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
9eb35988-5679-4ef0-bc65-ec828c5da40a|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
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)
7e256449-928c-41c1-aff3-c963bffff86c|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
Für den täglichen Programmieralltag habe ich ein paar praktische Spickzettel zusammengetragen: Reguläre Ausdrücke (RegExp): http://www.ilovejackdaniels.com/... Microsoft AJAX Library: http://aspnetresources.com/... ASP.Net 2.0 Page Lifecycle (Was passierte eigentlich wann): http://john-sheehan.com/... .Net String.Format: http://john-sheehan.com/... Viel Spass damit !
24309d00-f770-4e3d-8653-639c348d91fc|0|.0|27604f05-86ad-47ef-9e05-950bb762570c