<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Asp.Net 2.0</title>
        <link>http://blogs.escde.net/sascha/category/2.aspx</link>
        <description>Asp.Net 2.0</description>
        <language>en-US</language>
        <copyright>Sascha</copyright>
        <managingEditor>frietsch@escde.net</managingEditor>
        <generator>Subtext Version 1.9.3.0</generator>
        <item>
            <title>ADO.Net und Excel</title>
            <link>http://blogs.escde.net/sascha/archive/2007/07/05/83.aspx</link>
            <description>&lt;p&gt;Der Zugriff auf Exceldateien unter .Net 2.0 ist dank ADO.Net erstaunlich einfach. Dazu wird der OleDbProvider verwendet.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; connectionString = &lt;span class="str"&gt;@"Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=D:\Excel\Workbook.xls;Extended Properties="&lt;/span&gt;&lt;span class="str"&gt;"Excel 8.0;HDR=YES;"&lt;/span&gt;&lt;span class="str"&gt;""&lt;/span&gt;;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;Dieser ConnectionString enthält den Speicherort der Datei und gibt an, dass die erste Zeile der Worksheets die Spaltennamen enthält.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D%5B4%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="209" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D_thumb%5B2%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Nachdem die Connection geöffnet ist, verhält sich alles, wie von ADO.Net gewohnt.&lt;br /&gt;Mit Hilfe der GetSchema() Methode lassen sich Informationen zu den vorhandenen Tabellen (gleich Worksheets) und Spalten abrufen.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (OleDbConnection connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbConnection(connectionString))
{
    connection.Open();

    DataTable tables = connection.GetSchema(&lt;span class="str"&gt;"Tables"&lt;/span&gt;);
    DataTable columns = connection.GetSchema(&lt;span class="str"&gt;"Columns"&lt;/span&gt;);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;In den nachfolgenden Screenshots sieht man die jeweilige DataTable mit den Schemainformationen im DataSet-Visualizer des Visual Studio Debuggers. Achtung: Excel hängt für den Tabellenname ein $ an den Namen des Worksheets. Hier: Worksheetname "Studenten" wird zu Tabelle "Studenten$".&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D%5B7%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D_thumb%5B3%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D%5B10%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D_thumb%5B4%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Select-Abfragen funktionieren auch mit Parameter und das Ergebnis lässt sich an Steuerelemente binden.&lt;/p&gt;&lt;pre class="csharpcode"&gt;OleDbCommand selectCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbCommand(
    &lt;span class="str"&gt;"SELECT [MatrikelNr], [Vorname], [Nachname] FROM [Studenten$] "&lt;/span&gt; +
    &lt;span class="str"&gt;"WHERE [Nachname] LIKE @Nachname"&lt;/span&gt;, 
    connection);
selectCommand.Parameters.AddWithValue(&lt;span class="str"&gt;"Nachname"&lt;/span&gt;, &lt;span class="str"&gt;"A%"&lt;/span&gt;);

OleDbDataAdapter adapter = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbDataAdapter(selectCommand);

DataTable studenten = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataTable();
adapter.Fill(studenten);

&lt;span class="kwrd"&gt;this&lt;/span&gt;.GridView1.DataSource = studenten;
&lt;span class="kwrd"&gt;this&lt;/span&gt;.GridView1.DataBind();&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D%5B13%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="139" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D_thumb%5B5%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Auch die Insert- und Update-Commands funktionieren wie erwartet:&lt;/p&gt;&lt;pre class="csharpcode"&gt;OleDbCommand insertCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbCommand(
    &lt;span class="str"&gt;"INSERT INTO [Studenten$] ([MatrikelNr], [Vorname], [Nachname]) "&lt;/span&gt; +  
    &lt;span class="str"&gt;"VALUES (@MatrikelNR, @Vorname, @Nachname)"&lt;/span&gt;,
    connection);
insertCommand.Parameters.AddWithValue(&lt;span class="str"&gt;"MatrikelNr"&lt;/span&gt;, &lt;span class="str"&gt;"123459"&lt;/span&gt;);
insertCommand.Parameters.AddWithValue(&lt;span class="str"&gt;"Vorname"&lt;/span&gt;, &lt;span class="str"&gt;"Bert"&lt;/span&gt;);
insertCommand.Parameters.AddWithValue(&lt;span class="str"&gt;"Nachname"&lt;/span&gt;, &lt;span class="str"&gt;"Becker"&lt;/span&gt;);
&lt;span class="kwrd"&gt;int&lt;/span&gt; rowsAffected = insertCommand.ExecuteNonQuery();&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D%5B16%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="210" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/ADO.NetundExcel_13356/image%7B0%7D_thumb%5B6%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;&lt;img src="http://blogs.escde.net/sascha/aggbug/83.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sascha</dc:creator>
            <guid>http://blogs.escde.net/sascha/archive/2007/07/05/83.aspx</guid>
            <pubDate>Thu, 05 Jul 2007 19:51:49 GMT</pubDate>
            <comments>http://blogs.escde.net/sascha/archive/2007/07/05/83.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.escde.net/sascha/comments/commentRss/83.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.escde.net/sascha/services/trackbacks/83.aspx</trackback:ping>
        </item>
        <item>
            <title>Access Datenbank mit relativem Pfad aus web.config &amp;ouml;ffnen</title>
            <link>http://blogs.escde.net/sascha/archive/2007/07/02/82.aspx</link>
            <description>&lt;p&gt;Das hat mich einige Zeit gekostet: per Code eine OleDbConnection zu einer Access Datenbank zu öffnen, die im ConnectionStrings-Abschnitt der web.config Datei mit einem relativen Pfad konfiguriert ist. &lt;/p&gt; &lt;p&gt;Während das AccessDataSource Control in der DataFile-Eigenschaft eine relative Pfadangabe wie &lt;/p&gt;&lt;pre class="csharpcode"&gt;DataFile=&lt;span class="str"&gt;"~/App_Data/datenbank.mdb" &lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;richtig umzusetzen weiß, funktioniert das  nicht mir einer Connection, die in der web.config konfiguriert ist. Obwohl "DataSource=&amp;lt;absoluter Datenbankpfad&amp;gt;" einwandfrei funktioniert, brachten weder&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;connectionStrings&amp;gt;
    &amp;lt;add name=&lt;span class="str"&gt;"DatenbankConnectionString"&lt;/span&gt; 
        connectionString=&lt;span class="str"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;
        DataSource=~App_Data/datenbank.mdb"&lt;/span&gt;
        providerName=&lt;span class="str"&gt;"System.Data.OleDb"&lt;/span&gt;/&amp;gt;
&amp;lt;/connectionStrings&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;noch folgende Variationen des ConnectionStrings den gewünschten Erfolg:&lt;/p&gt;&lt;pre class="csharpcode"&gt;connectionString=&lt;span class="str"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;
    Data File=~App_Data/datenbank.mdb"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;connectionString=&lt;span class="str"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;
    DataFile=~App_Data/datenbank.mdb"&lt;/span&gt;
&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;Die Lösung:&lt;/p&gt;
&lt;p&gt;"~App_Data/" muss im ConnectionString der web.config Datei durch "|DataDirectory|" ersetzt werden.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;connectionStrings&amp;gt;
  &amp;lt;add name=&lt;span class="str"&gt;"DatenbankConnectionString"&lt;/span&gt; 
    connectionString=&lt;span class="str"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=|DataDirectory|datenbank.mdb"&lt;/span&gt; 
    providerName=&lt;span class="str"&gt;"System.Data.OleDb"&lt;/span&gt;/&amp;gt;
&amp;lt;/connectionStrings&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;Dann lässt sich eine OleDbConnection im Code mit&lt;/p&gt;&lt;pre class="csharpcode"&gt;OleDbConnection db = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbConnection(
    ConfigurationManager.ConnectionStrings[&lt;span class="str"&gt;"DatenbankConnectionString"&lt;/span&gt;].ConnectionString);
db.Open();&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;wie gewünscht öffnen. &lt;/p&gt;
&lt;p&gt;Das gleiche gilt auch für Verbindungen zu SQLExpress-Datenbanken.&lt;/p&gt;&lt;img src="http://blogs.escde.net/sascha/aggbug/82.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sascha</dc:creator>
            <guid>http://blogs.escde.net/sascha/archive/2007/07/02/82.aspx</guid>
            <pubDate>Mon, 02 Jul 2007 21:37:22 GMT</pubDate>
            <comments>http://blogs.escde.net/sascha/archive/2007/07/02/82.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.escde.net/sascha/comments/commentRss/82.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.escde.net/sascha/services/trackbacks/82.aspx</trackback:ping>
        </item>
        <item>
            <title>SelfSSL - eigene Zertifikate auf die Schnelle</title>
            <link>http://blogs.escde.net/sascha/archive/2007/04/12/72.aspx</link>
            <description>&lt;p&gt;Nicht immer hat man für die Entwicklungsumgebung ein Serverzertifikat zur Hand, mit dem sich eine SSL-verschlüsselte Website testen lässt. Mit SelfSSL aus den &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&amp;amp;DisplayLang=en"&gt;Internet Information Services (IIS) 6.0 Resource Kit Tools&lt;/a&gt; hat man sich schnell selbst ein Zertifikat erstellt und in IIS importiert. Nach der Installation der Resource Kit Tools auf dem Webserver, lässt sich SelfSSL über das Startmenü aufrufen. Genauer gesagt, wird eine Kommandozeile mit einem Hilfetext geöffnet. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/SelfSSLeigeneZertifikateaufdieSchnelle_12354/image%7B0%7D%5B7%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="247" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/SelfSSLeigeneZertifikateaufdieSchnelle_12354/image%7B0%7D_thumb%5B3%5D.png" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Die Standardeinstellungen sind ausreichend, also das Tool mit selfSSL aufrufen, die Nachfrage für die Installation des Zertifikats in der Standardwebsite des IIS bestätigen. - Das war's. Im Webbrowser kann die Installation mit &lt;a href="https://&amp;lt;computername&amp;gt;"&gt;https://&amp;lt;computername&amp;gt;&lt;/a&gt; überprüft werden.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/SelfSSLeigeneZertifikateaufdieSchnelle_12354/image%7B0%7D%5B8%5D.png" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="188" src="http://blogs.escde.net/images/blogs_escde_net_86/sascha/WindowsLiveWriter/SelfSSLeigeneZertifikateaufdieSchnelle_12354/image%7B0%7D_thumb%5B4%5D.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Da wir uns das Zertifikat selbst ausgestellt haben, werden alle gängigen Webbrowser eine Warnmeldung ausgeben. Die Funktionalität wird durch diese Meldung aber nicht beeinträchtigt. Selbst ausgestellte Zertifikate sollten aber nur in der Testumgebung verwendet werden. &lt;/p&gt;&lt;img src="http://blogs.escde.net/sascha/aggbug/72.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sascha</dc:creator>
            <guid>http://blogs.escde.net/sascha/archive/2007/04/12/72.aspx</guid>
            <pubDate>Thu, 12 Apr 2007 18:44:07 GMT</pubDate>
            <comments>http://blogs.escde.net/sascha/archive/2007/04/12/72.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.escde.net/sascha/comments/commentRss/72.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.escde.net/sascha/services/trackbacks/72.aspx</trackback:ping>
        </item>
        <item>
            <title>Konfiguration in ASP.NET 2.0 - Nachtrag</title>
            <link>http://blogs.escde.net/sascha/archive/2006/07/24/43.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Verwendung von benutzerdefinierten Konfigurationsabschnitten mit verschachtelten Elementen.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:a1a33b4a-adea-45c4-b473-e2f57f115029" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;demoConfiguration &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;oneStringProperty&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="Ein Textwert!"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; oneNumericProperty&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="25"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;demoSubElement &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;anotherStringProperty&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="SubElement Property"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;demoConfiguration&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Wenn die Konfiguration verschachtelte Elemente enthalten muß, wird das Subelement in einer Eigenschaft in der Elternklasse mit dem ConfigurationProperty Attribut gekennzeichnet. Wichtig ist hier der Cast auf den Typ des Subelements beim Lesen der Eigenschaft.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:33a6e5d7-3f5c-4ddf-ad06-2b8040b16ff9" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;[ConfigurationProperty(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;demoSubElement&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; DemoSubElement DemoSubElement
{
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;get&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt; (DemoSubElement)&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;demoSubElement&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;]; }
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;set&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;demoSubElement&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value; }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Das Subelement selbst wird in einer neuen Klasse abgebildet, die von System.Configuration.ConfigurationElement abgeleitet wird. Die Eigenschaften dieser Klasse werden wie gehabt mit ConfigurationProperty Attributen auf die entsprechenden Attribute in der .config-Datei gemappt.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:3db870aa-aabe-49f5-9d43-0165b4276e8a" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; DemoSubElement : ConfigurationElement
{
    [ConfigurationProperty(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;anotherStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;, DefaultValue &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;Standardwert&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;, IsRequired &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; AnotherStringProperty
    {
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;get&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;anotherStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;].ToString(); }
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;set&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;anotherStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value; }
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Auf der Webseite ist das neue Subelement jetzt verwendbar.
&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:a03285a8-d517-4187-8207-2748f6b6e982" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;WebConfigurationCustom.DemoSection dc &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;
(DemoSection)WebConfigurationManager.GetSection(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;demoConfiguration&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;);
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; prop &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; dc.DemoSubElement.AnotherStringProperty; &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; = "SubElement Property"&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://blogs.escde.net/sascha/aggbug/43.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sascha</dc:creator>
            <guid>http://blogs.escde.net/sascha/archive/2006/07/24/43.aspx</guid>
            <pubDate>Mon, 24 Jul 2006 08:41:45 GMT</pubDate>
            <comments>http://blogs.escde.net/sascha/archive/2006/07/24/43.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.escde.net/sascha/comments/commentRss/43.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.escde.net/sascha/services/trackbacks/43.aspx</trackback:ping>
        </item>
        <item>
            <title>Konfiguration in ASP.NET 2.0</title>
            <link>http://blogs.escde.net/sascha/archive/2006/07/20/42.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Konfiguriert wird immer, daher hier eine kleine Auffrischung. &lt;/p&gt;&lt;p&gt;Die in den Beispielen verwendete web.config:&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:9be41322-d86c-40e4-934d-1711904180b5" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #FF00FF; "&gt;xml version="1.0"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;configuration&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;configSections&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;section &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;name&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="demoConfiguration"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; type&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="WebConfigurationCustom.DemoSection, WebConfigurationCustom"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;configSections&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;demoConfiguration &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;oneStringProperty&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="Ein Textwert"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; oneNumericProperty&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="25"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;demoConfiguration&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;appSettings&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;key&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="OneSetting"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; value&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="http://www.OneUrl.com/services/OneService.asmx"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;key&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="AnotherSetting"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; value&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="http://www.AnotherUrl.com/services/AnotherService.asmx"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;appSettings&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;connectionStrings&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;name&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="AdventureWorksConnectionString"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            connectionString&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="Data Source=COMPANION\SQL2005;Initial Catalog=AdventureWorks;Integrated Security=True"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            providerName&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="System.Data.SqlClient"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;connectionStrings&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;system&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;.web&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;compilation &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;debug&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="true"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;authentication &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;mode&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="Windows"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;system.web&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;configuration&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;


&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Die Application Settings sind schon von NET 1.1 bekannt. Der Zugriff erfolgt jetzt über die ConfigurationManager Klasse.
&lt;/p&gt;&lt;p&gt;string setting = ConfigurationManager.AppSettings["OneSetting"].ToString();
&lt;/p&gt;&lt;p&gt;Neu ist der Konfigurationsabschnitt für Verbindungszeichenfolgen. Im connectionStrings Element der .config-Datei werden alle Datenbankverbindungen abgespeichert. Zugriff darauf gewährt ebenfalls die ConfigurationManager Klasse.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:d8333d94-8901-4cb1-a6f7-e83ed4ec0ba6" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; connInfo &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; ConfigurationManager.ConnectionStrings[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;AdventureWorksConnectionString&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;].ProviderName
&lt;/span&gt;&lt;span style="color: #000000; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;\r\n&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;+&lt;/span&gt;&lt;span style="color: #000000; "&gt; ConfigurationManager.ConnectionStrings[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;AdventureWorksConnectionString&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;].ConnectionString;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Um auf die übrigen Konfigurationsabschnitte der web.config Datei zuzugreifen, wird für ASP.NET Anwendungen die WebConfigurationManager Klasse im System.Web.Configuration Namespace verwendet.
&lt;/p&gt;&lt;p&gt;Die Configuration Klasse ist der Ausgangspunkt beim Zugriff auf die Konfigurationsdatei einer Anwendung. Sie bietet ebenfalls Zugriff auf die Application Settings und den Abschnitt für Connection Strings. Darüber hinaus kann man von ihr aber auch für jeden anderen Konfigurationsabschnitt in der web.config Datei ein passendes Section Objekt bekommen.
&lt;/p&gt;&lt;p&gt;Nachfolgendes Beispiel liest den Authentifizierungsmodus ("Windows") aus der Konfigurationsdatei.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:a794e883-0ca7-46ef-8966-bf6dd3aabaa8" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Web.Configuration;
…
&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; den Pfad zur web.config im gleichen Verzeichnis basteln&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;String path &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; Request.CurrentExecutionFilePath;
path &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; path.Substring(&lt;/span&gt;&lt;span style="color: #000000; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; "&gt;, path.LastIndexOf(&lt;/span&gt;&lt;span style="color: #000000; "&gt;'&lt;/span&gt;&lt;span style="color: #000000; "&gt;/&lt;/span&gt;&lt;span style="color: #000000; "&gt;'&lt;/span&gt;&lt;span style="color: #000000; "&gt;));
&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; Configuration öffnen&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;Configuration config &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; WebConfigurationManager.OpenWebConfiguration(path);
&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; Authentication Section, Cast erforderlich&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;AuthenticationSection auth &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; (AuthenticationSection)config.GetSection(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;system.web/authentication&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;);
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; authInfo &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt;.Format(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;Authentication Mode: {0}&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;,auth.Mode.ToString());
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Genauso funktioniert das auch für andere Bereiche der Konfigurationsdatei. Der GetSection Methode den Pfad mitgeben und die Rückgabe entsprechend casten (CompilationSection, PagesSection, …)
&lt;/p&gt;&lt;p&gt;Eine Section Klasse für den benutzerdefinierten Konfigurationsabschnitt demoConfiguration ist schnell erstellt. Eine Klassenbibliothek WebConfigurationCustom hinzufügen und darin eine Klasse DemoSection erzeugen, die von System.Configuration.ConfigurationSection erbt. Über das ConfigurationProperty Attribut wird die Zuordnung von Attributen und Elementen in der .config-Datei auf die Eigenschaften der Klasse hergestellt. Das wars.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:d07e2980-0b8b-437a-b4b4-34f28485f12c" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Configuration;
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;namespace&lt;/span&gt;&lt;span style="color: #000000; "&gt; WebConfigurationCustom
{
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; DemoSection : ConfigurationSection
    {
        [ConfigurationProperty(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;, DefaultValue &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;Standardwert&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;, IsRequired &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; OneStringProperty
        {
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;get&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;].ToString(); }
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;set&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneStringProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value; }
        }
        [ConfigurationProperty(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneNumericProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;, DefaultValue &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;666&lt;/span&gt;&lt;span style="color: #000000; "&gt;, IsRequired &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;false&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; "&gt; OneNumericProperty
        {
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;get&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt; (&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;int&lt;/span&gt;&lt;span style="color: #000000; "&gt;)&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneNumericProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;]; }
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;set&lt;/span&gt;&lt;span style="color: #000000; "&gt; { &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;this&lt;/span&gt;&lt;span style="color: #000000; "&gt;[&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;oneNumericProperty&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value; }
        }
    }
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In der web.config muß nun die neue Section im Abschnitt configSections noch bekanntgegeben werden.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:715bb538-6428-4a7b-a6af-5bab0f2803e7" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;section &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;name&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="demoConfiguration"&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; type&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;="WebConfigurationCustom.DemoSection, WebConfigurationCustom"&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Der Typ wird dabei als &lt;strong&gt;"Namespace.KlassenName, AssemblyName"&lt;/strong&gt; angegeben. Auf der Webseite kann jetzt auf den neuen Konfigurationsabschnitt zugegriffen werden.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:734add89-2da7-41c7-bac9-d00612a7fdfc" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;WebConfigurationCustom.DemoSection dc &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;
(DemoSection)WebConfigurationManager.GetSection(&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;demoConfiguration&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;);
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt; prop &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; dc.OneStringProperty; &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt; = "Ein Textwert"&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Einen guten Überblick mit vielen Beispielen zur Konfiguration von ASP.NET 2.0 im Allgemeinen und auch zur Verwendung der Management API gibt es unter &lt;a href="http://www.asp.net/QuickStart/aspnet/doc/management/default.aspx"&gt;http://www.asp.net/QuickStart/aspnet/doc/management/default.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.escde.net/sascha/aggbug/42.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sascha</dc:creator>
            <guid>http://blogs.escde.net/sascha/archive/2006/07/20/42.aspx</guid>
            <pubDate>Thu, 20 Jul 2006 14:40:45 GMT</pubDate>
            <comments>http://blogs.escde.net/sascha/archive/2006/07/20/42.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.escde.net/sascha/comments/commentRss/42.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.escde.net/sascha/services/trackbacks/42.aspx</trackback:ping>
        </item>
    </channel>
</rss>