<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LocalDev &#187; C#</title>
	<atom:link href="http://localdev.de/tags/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://localdev.de</link>
	<description>Web, Desktop &#38; Mobile Development</description>
	<lastBuildDate>Thu, 01 Dec 2011 18:54:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP/.NET/C#: Fehlerhafte SSL Zertifikate ignorieren</title>
		<link>http://localdev.de/2011/02/php-net-csharp-fehlerhafte-ssl-zertifikate-ignorieren/</link>
		<comments>http://localdev.de/2011/02/php-net-csharp-fehlerhafte-ssl-zertifikate-ignorieren/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 20:44:21 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Zertifikat]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=1445</guid>
		<description><![CDATA[Wieder so ein Code Schnipsel den ich häufiger mal brauche und immer wieder vergesse. Bei der Entwicklung neuer Programme nutze ich oft selbst signierte Zertifikate, die aber sinnigerweise von keinem Programm ohne weiteres angenommen werden. Firefox meldet beispielsweise „Diese Verbindung wird nicht vertraut“, .NET wirft eine Exception mit der Meldung „Für den geschützten SSL/TLS-Kanal konnte [...]]]></description>
			<content:encoded><![CDATA[<p>Wieder so ein Code Schnipsel den ich häufiger mal brauche und immer wieder vergesse.</p>
<p>Bei der Entwicklung neuer Programme nutze ich oft selbst signierte Zertifikate, die aber sinnigerweise von keinem Programm ohne weiteres angenommen werden. Firefox meldet beispielsweise „Diese Verbindung wird nicht vertraut“, .NET wirft eine Exception mit der Meldung „Für den geschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden.“  und das cURL Modul von PHP gibt ein leeres Ergebnis zurück.</p>

<a href="http://localdev.de/wp-content/gallery/artikelbilder/ssl_fehler.png" title="" class="thickbox" rel="singlepic29" >
	<img class="ngg-singlepic ngg-center" src="http://localdev.de/wp-content/gallery/cache/29__320x240_ssl_fehler.png" alt="ssl_fehler" title="ssl_fehler" />
</a>

<p>Was am Ende durchaus gewollt ist, stört bei der Entwicklung. Mit den folgenden Code Schnipseln könnt ihr das „Problem“ beheben.<br />
<span id="more-1445"></span><br />
<strong>.NET / C#</strong></p>
<p>Führt am Anfang eurer Applikation, bzw. vor dem Öffnen der ersten Verbindung den folgenden Code aus. Die Verbindungen sollten jetzt ohne Exception aufgebaut werden können.</p>
<pre class="brush: csharp; title: ; notranslate">
ServicePointManager.ServerCertificateValidationCallback =
				new RemoteCertificateValidationCallback(delegate { return true; });
</pre>
<p><strong>PHP / cURL</strong><br />
Beim cURL Modul von PHP müssen die Optionen CURLOPT_SSL_VERIFYHOST und CURLOPT_SSL_VERIFYPEER auf false gesetzt werden, und schon funktioniert die Verbindung und gibt ein Ergebnis zurück.</p>
<pre class="brush: php; title: ; notranslate">
$resCurl = curl_init(&quot;https://localhost/&quot;);
curl_setopt($resCurl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($resCurl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($resCurl, CURLOPT_RETURNTRANSFER, true);
$strReturn = curl_exec($resCurl);
curl_close($resCurl);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2011/02/php-net-csharp-fehlerhafte-ssl-zertifikate-ignorieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET: Mails über SMTP mit SMTP Auth versenden</title>
		<link>http://localdev.de/2010/01/asp-net-mails-uber-smtp-mit-smtp-auth-versenden/</link>
		<comments>http://localdev.de/2010/01/asp-net-mails-uber-smtp-mit-smtp-auth-versenden/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 07:28:58 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[SMTP Auth]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=383</guid>
		<description><![CDATA[Mit dem folgenden Code Schnipsel lassen sich E-Mails über einen SMTP Server versenden, der eine Anmeldung mittels SMTP Auth erwartet. Das MailMessage Objekt muss natürlich noch mit den wichtigsten Daten (Empfänger, Betreff, Nachricht etc.) gefüllt werden.]]></description>
			<content:encoded><![CDATA[<p>Mit dem folgenden Code Schnipsel lassen sich E-Mails über einen SMTP Server versenden, der eine Anmeldung mittels SMTP Auth erwartet.</p>
<pre class="brush: csharp; title: ; notranslate">
MailMessage Message = new MailMessage();

// Benutzername u. Passwort
NetworkCredential UserNamePass = new NetworkCredential(&quot;username@example.org&quot;, &quot;password&quot;);

// SMTP Client erstellen
SmtpClient Client = new SmtpClient()
{
	DeliveryMethod = SmtpDeliveryMethod.Network,
	Host = &quot;mail.example.org&quot;,
	UseDefaultCredentials = false,
	Credentials = UserNamePass
};

// Mail versenden
Client.Send(Message);
</pre>
<p>Das <em>MailMessage</em> Objekt muss natürlich noch mit den wichtigsten Daten (Empfänger, Betreff, Nachricht etc.) gefüllt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2010/01/asp-net-mails-uber-smtp-mit-smtp-auth-versenden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lighttpd 1.4: HTTP 417 Expectation Failed</title>
		<link>http://localdev.de/2010/01/lighttpd-1-4-http-417-expectation-failed/</link>
		<comments>http://localdev.de/2010/01/lighttpd-1-4-http-417-expectation-failed/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 14:22:40 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[417]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[Lighttpd]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=417</guid>
		<description><![CDATA[Versucht man mit einer cURL oder .NET Anwendung POST Daten an einen Lighttpd 1.4 Server zu senden, bekommt man die Meldung Dies liegt daran, das die Programme einen Expect: 100-continue Header senden, und als Antwort 100 (Continue) oder 417 Expectation Failed erwarten. Lighty kennt den Header jedoch nicht, und antwortet deswegen mit dem besagten 417 [...]]]></description>
			<content:encoded><![CDATA[<p>Versucht man mit einer cURL oder .NET Anwendung POST Daten an einen Lighttpd 1.4 Server zu senden, bekommt man die Meldung</p>
<pre class="brush: plain; title: ; notranslate">

HTTP/1.1 417 Expectation Failed
</pre>
<p>Dies liegt daran, das die Programme einen <em>Expect: 100-continue</em> Header senden, und als Antwort <em>100 (Continue)</em> oder <em>417 Expectation Failed</em> erwarten. Lighty kennt den Header jedoch nicht, und antwortet deswegen mit dem besagten <em>417 Expectation Failed</em>.</p>
<p>Der <em>Expect: 100-continue</em> Header soll verhindern, das Daten an den Server gesendet werden, die nicht benötigt werden. Erkennt der Server z.B. das er die Anfrage ablehnen muss, kann er dies dem Client mitteilen, noch bevor die POST Daten übermittelt wurden.</p>
<p>Wer dennoch POST Daten an Lighty senden möchte, kann die folgenden Paramter anpassen:</p>
<p><strong>.NET</strong></p>
<pre class="brush: csharp; title: ; notranslate">

System.Net.ServicePointManager.Expect100Continue = false;
</pre>
<p><strong>cURL unter PHP</strong></p>
<pre class="brush: php; title: ; notranslate">
curl_setopt($objCurl, CURLOPT_HTTPHEADER, array('Expect: '));
</pre>
<p><strong>cURL auf der Kommandozeile</strong></p>
<pre class="brush: bash; title: ; notranslate">
curl -v -H &quot;Expect: &quot; -F &quot;field=value&quot; http://example.com/upload.php
</pre>
<p>Alternativ aktualisiert man auf Lighttpd 1.5. Dieser kennt den <em>Expect: 100-continue</em> Header und beantwortet entsprechende Anfragen korrekt.</p>
<p>Browser senden übrigens keinen <em>Expect: 100-continue</em> Header.</p>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2010/01/lighttpd-1-4-http-417-expectation-failed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASP.NET: Namespace in allen ASP Seiten zur Verfügung stellen</title>
		<link>http://localdev.de/2009/11/asp-net-namespace-in-allen-asp-seiten-zur-verfugung-stellen/</link>
		<comments>http://localdev.de/2009/11/asp-net-namespace-in-allen-asp-seiten-zur-verfugung-stellen/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 09:46:41 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=330</guid>
		<description><![CDATA[Um einen Namespace in allen Seiten zur Verfügung zu stellen, reicht es diesen in der Web.config zu hinterlegen. Ein zusätzliches einbinden des Namespaces in jede Seite entfällt so in Zukunft.]]></description>
			<content:encoded><![CDATA[<p>Um einen Namespace in allen Seiten zur Verfügung zu stellen, reicht es diesen in der Web.config zu hinterlegen. Ein zusätzliches einbinden des Namespaces in jede Seite entfällt so in Zukunft.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;system.web&gt;
  &lt;pages&gt;
    &lt;namespaces&gt;
        &lt;add namespace=&quot;Mein.Namespace&quot; /&gt;
    &lt;/namespaces&gt;
  &lt;/pages&gt;
&lt;/system.web&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2009/11/asp-net-namespace-in-allen-asp-seiten-zur-verfugung-stellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET: Hex to Char / Char to Hex</title>
		<link>http://localdev.de/2009/11/net-hex-to-char-char-to-hex/</link>
		<comments>http://localdev.de/2009/11/net-hex-to-char-char-to-hex/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 12:32:54 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Char]]></category>
		<category><![CDATA[HEX]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=275</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp; title: ; notranslate">
            // Hex to Char -&gt; Ergebnis: A
            char c = (char)Convert.ToInt32(&quot;0x41&quot;, 16);

            // Char to Hex -&gt; Ergebnis: 0x41
            string hex = &quot;0x&quot; + Convert.ToInt32('A').ToString(&quot;X&quot;);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2009/11/net-hex-to-char-char-to-hex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC: Zusätzliche GET Parameter mit dem ActionLink</title>
		<link>http://localdev.de/2009/10/asp-net-mvc-zusatzliche-get-parameter-mit-dem-actionlink/</link>
		<comments>http://localdev.de/2009/10/asp-net-mvc-zusatzliche-get-parameter-mit-dem-actionlink/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 09:57:46 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=238</guid>
		<description><![CDATA[Wichtig beim Einbinden in die eigene Seite ist, das leere new { } als letzten Parameter zu belassen. Ohne diesen werden die zusätzlichen Parameter nicht als GET Parameter angefügt.]]></description>
			<content:encoded><![CDATA[<p>Wichtig beim Einbinden in die eigene Seite ist, das leere <em>new { }</em> als letzten Parameter zu belassen. Ohne diesen werden die zusätzlichen Parameter nicht als GET Parameter angefügt.</p>
<pre class="brush: csharp; title: ; notranslate">&lt;%=Html.ActionLink(&quot;Linktitel&quot;, &quot;Action&quot;, &quot;Controller&quot;, new { param1 = value1, param2 = value2 }, new { })%&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2009/10/asp-net-mvc-zusatzliche-get-parameter-mit-dem-actionlink/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET: Dezimalzahl auf 2 Stellen kürzen</title>
		<link>http://localdev.de/2009/10/net-dezimalzahl-auf-2-stellen-kurzen/</link>
		<comments>http://localdev.de/2009/10/net-dezimalzahl-auf-2-stellen-kurzen/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 20:38:17 +0000</pubDate>
		<dc:creator>Fabian Martin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://localdev.de/?p=172</guid>
		<description><![CDATA[Siehe auch: http://msdn.microsoft.com/de-de/library/fzeeb5cd(VS.90).aspx http://msdn.microsoft.com/de-de/library/dwhawy9k(VS.90).aspx]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp; title: ; notranslate">decimal MyNumber = decimal.Parse(&quot;32,0563&quot;);
string Formated = MyNumber.ToString(&quot;N2&quot;);</pre>
<p>Siehe auch:<br />
<a href="http://msdn.microsoft.com/de-de/library/fzeeb5cd(VS.90).aspx" target="_blank">http://msdn.microsoft.com/de-de/library/fzeeb5cd(VS.90).aspx</a><br />
<a href="http://msdn.microsoft.com/de-de/library/dwhawy9k(VS.90).aspx" target="_blank">http://msdn.microsoft.com/de-de/library/dwhawy9k(VS.90).aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://localdev.de/2009/10/net-dezimalzahl-auf-2-stellen-kurzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

