<?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>Alex Medina &#187; .Net</title>
	<atom:link href="http://www.alexmedina.net/blog/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexmedina.net/blog</link>
	<description>Porque todos los días se aprende algo nuevo...</description>
	<lastBuildDate>Thu, 22 Dec 2011 09:40:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Recoger parámetros de un programa por consola</title>
		<link>http://www.alexmedina.net/blog/2011/12/22/recoger-parametros-de-un-programa-por-consola/</link>
		<comments>http://www.alexmedina.net/blog/2011/12/22/recoger-parametros-de-un-programa-por-consola/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 09:40:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[parametros]]></category>
		<category><![CDATA[programa]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=314</guid>
		<description><![CDATA[Para obtener los parámetros que se le pasan por consola a un programa se puede utilizar este código, por ejemplo en la consola pondríamos: &#160; &#62;Programa.exe argumento1 var x = Environment.GetCommandLineArgs(); if (x.Length &#62; 0) { // x[0] es el nombre del programa -&#62; resultado : Programa.exe Console.WriteLine(x[1]); // -&#62; resultado: argumento1 }]]></description>
			<content:encoded><![CDATA[<pre></pre>
<p>Para obtener los parámetros que se le pasan por consola a un programa se puede utilizar este código, por ejemplo en la consola pondríamos:</p>
<p>&nbsp;</p>
<pre><strong>&gt;Programa.exe argumento1</strong></pre>
<pre><strong>
</strong></pre>
<pre><span style="color: #339966;">var x = Environment.GetCommandLineArgs();</span>
<span style="color: #339966;">if (x.Length &gt; 0)</span>
<span style="color: #339966;">{</span>
<span style="color: #339966;"> // x[0] es el nombre del programa -&gt; resultado : Programa.exe</span>
<span style="color: #339966;"> Console.WriteLine(x[1]); // -&gt; resultado: argumento1</span>
<span style="color: #339966;">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/12/22/recoger-parametros-de-un-programa-por-consola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso Online (GRATIS) de Desarrollo de Aplicaciones en Silverlight para Windows Phone</title>
		<link>http://www.alexmedina.net/blog/2011/10/11/curso-online-gratis-de-desarrollo-de-aplicaciones-en-silverlight-para-windows-phone/</link>
		<comments>http://www.alexmedina.net/blog/2011/10/11/curso-online-gratis-de-desarrollo-de-aplicaciones-en-silverlight-para-windows-phone/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 11:40:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Phone]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=304</guid>
		<description><![CDATA[Os dejo el enlace: http://msdn.microsoft.com/es-es/windowsphone/hh307892 &#160; &#160; &#160; &#160; &#160; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://i.msdn.microsoft.com/ff645433.WP_Brd_Grn_h_rgb(es-es,MSDN.10).png" alt="" width="726" height="127" /></p>
<p>Os dejo el enlace:</p>
<p><a href="http://msdn.microsoft.com/es-es/windowsphone/hh307892">http://msdn.microsoft.com/es-es/windowsphone/hh307892</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/10/11/curso-online-gratis-de-desarrollo-de-aplicaciones-en-silverlight-para-windows-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linq to XML: carga de archivos XML enormes (más de 1Gb)</title>
		<link>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-carga-de-archivos-xml-enormes-mas-de-1gb/</link>
		<comments>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-carga-de-archivos-xml-enormes-mas-de-1gb/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 09:39:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[SQLServer]]></category>
		<category><![CDATA[archivos grandes]]></category>
		<category><![CDATA[Linq to XML]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=299</guid>
		<description><![CDATA[Estos días he estado bastante liado ya que el proceso que teníamos de carga de XML realizaba una precarga en memoria del archivo (método Load()), la solución que hay es bastante sencilla con un XMLReader, os pongo un fragmento que seguro se entiende: &#160; using (XmlReader reader = XmlReader.Create(directoryTemp + fichero)) { reader.MoveToContent(); int count [...]]]></description>
			<content:encoded><![CDATA[<p>Estos días he estado bastante liado ya que el proceso que teníamos de carga de XML realizaba una precarga en memoria del archivo (método Load()), la solución que hay es bastante sencilla con un XMLReader, os pongo un fragmento que seguro se entiende:</p>
<p>&nbsp;</p>
<pre><span style="color: #339966;">using (XmlReader reader = XmlReader.Create(directoryTemp + fichero))</span>
<span style="color: #339966;">{</span>
<span style="color: #339966;"> reader.MoveToContent();</span>

<span style="color: #339966;"> int count = 0; // una variable contador</span><span style="color: #339966;"> XElement nombretabla = null; // un XElement auxiliar</span>

<span style="color: #339966;"> while (!reader.EOF)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> switch (reader.NodeType)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> case XmlNodeType.Element: // se puede filtrar por tipo de XmlNodeType...</span>
<span style="color: #339966;"> if (count == 0)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> // CUALQUIER CONDICION</span>
<span style="color: #339966;"> count++;</span>
<span style="color: #339966;"> reader.Read();</span>

<span style="color: #339966;"> }</span><span style="color: #339966;"> else if (count == 1)</span>
<span style="color: #339966;"> {</span></pre>
<pre><span style="color: #339966;"> nombretabla = new XElement((XName)reader.Name); // esto para crear un XELEMENT con el nombre del Reader actual</span>
<span style="color: #339966;"> count++;</span>
<span style="color: #339966;"> reader.Read();</span>
<span style="color: #339966;"> }</span><span style="color: #339966;"> else</span>
<span style="color: #339966;"> {</span></pre>
<pre><span style="color: #339966;"> if (string.IsNullOrEmpty(nodoReg)) nodoReg = reader.Name; // condicion para omitir anidados..</span>

<span style="color: #339966;"> if (nodoReg == reader.Name)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> count++;</span>
<span style="color: #339966;"> nombretabla.Add(XElement.ReadFrom(reader) as XElement);</span>

<span style="color: #339966;"> // INSERCION .. cada X lanzo una inserción en BD</span>
<span style="color: #339966;"> if (count % numInserciones == 0)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> nombrecondicionado.Add(nombretabla);</span>
<span style="color: #339966;"> docaux.Add(nombrecondicionado);</span>

<span style="color: #339966;"> // VALIDACION ...</span>
<span style="color: #339966;"> validado = ValidarEsquema(docaux, esquema);</span>

<span style="color: #339966;"> if (validado)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> nreg += cond.Insertar(docaux, delete);</span>
<span style="color: #339966;"> delete = false;</span>

<span style="color: #339966;"> // vacio contenidos</span>
<span style="color: #339966;"> nombretabla.Elements().Remove();</span>
<span style="color: #339966;"> nombrecondicionado.Elements().Remove();</span>
<span style="color: #339966;"> docaux.Elements().Remove();</span>
<span style="color: #339966;"> }</span>
<span style="color: #339966;"> else</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> OnReportInformation(string.Format("ERROR fichero{0} no valido.", fichero), ReportLevel.Error);</span>
<span style="color: #339966;"> EstadoCarga = 2;</span>
<span style="color: #339966;"> }</span>
<span style="color: #339966;"> }</span>

<span style="color: #339966;"> }</span>

<span style="color: #339966;"> }</span>
<span style="color: #339966;"> break;</span>

<span style="color: #339966;"> default :</span>
<span style="color: #339966;"> reader.Read();</span>
<span style="color: #339966;"> break;</span>

<span style="color: #339966;"> }</span>

<span style="color: #339966;"> }</span>
<span style="color: #339966;"> // INSERCION DE LOS ULTIMOS QUE NO ENTRAN EN EL ÚLTIMO WHILE</span>
<span style="color: #339966;"> nombrecondicionado.Add(nombretabla);</span>
<span style="color: #339966;"> docaux.Add(nombrecondicionado);</span>

<span style="color: #339966;"> // VALIDACION</span>
<span style="color: #339966;"> validado = ValidarEsquema(docaux, esquema);</span>

<span style="color: #339966;"> if (validado)</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> nreg += cond.Insertar(docaux, delete);</span>

<span style="color: #339966;"> // vacio contenidos</span>
<span style="color: #339966;"> nombretabla.Elements().Remove();</span>
<span style="color: #339966;"> nombrecondicionado.Elements().Remove();</span>
<span style="color: #339966;"> docaux.Elements().Remove();</span>
<span style="color: #339966;"> }</span>
<span style="color: #339966;"> else</span>
<span style="color: #339966;"> {</span>
<span style="color: #339966;"> OnReportInformation(string.Format("ERROR fichero{0} no valido.", fichero), ReportLevel.Error);</span>
<span style="color: #339966;"> EstadoCarga = 2;</span>
<span style="color: #339966;"> }</span>

<span style="color: #339966;">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-carga-de-archivos-xml-enormes-mas-de-1gb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linq to XML: Diferencia entre Elements() y Descendants()</title>
		<link>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-diferencia-entre-elements-y-descendants/</link>
		<comments>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-diferencia-entre-elements-y-descendants/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:55:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[Descendatns]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Linq to XML]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=297</guid>
		<description><![CDATA[La diferencia es sencilla, mientra Descendants() cuenta todos los nodos (anidados incluidos), Elements() solo cuenta los del mismo nivel.  string xml = @"                 &#60;Root&#62;                     &#60;Item&#62;                         &#60;id&#62;1&#60;/id&#62;                     &#60;/Item&#62;                     &#60;Item&#62;                         &#60;id&#62;2&#60;/id&#62;                     &#60;/Item&#62;                     &#60;Item&#62;                         &#60;id&#62;3&#60;/id&#62;                         &#60;Items&#62;                             &#60;Item&#62;                                 &#60;id&#62;5&#60;/id&#62;                             &#60;/Item&#62;                             &#60;Item&#62;                                 &#60;id&#62;6&#60;/id&#62;                             &#60;/Item&#62;                           [...]]]></description>
			<content:encoded><![CDATA[<p>La diferencia es sencilla, mientra Descendants() cuenta todos los nodos (anidados incluidos), Elements() solo cuenta los del mismo nivel.</p>
<pre> <span style="color: #339966;">string xml = @"</span>
<span style="color: #339966;">                &lt;Root&gt;</span>
<span style="color: #339966;">                    &lt;Item&gt;</span>
<span style="color: #339966;">                        &lt;id&gt;1&lt;/id&gt;</span>
<span style="color: #339966;">                    &lt;/Item&gt;</span>
<span style="color: #339966;">                    &lt;Item&gt;</span>
<span style="color: #339966;">                        &lt;id&gt;2&lt;/id&gt;</span>
<span style="color: #339966;">                    &lt;/Item&gt;</span>
<span style="color: #339966;">                    &lt;Item&gt;</span>
<span style="color: #339966;">                        &lt;id&gt;3&lt;/id&gt;</span>
<span style="color: #339966;">                        &lt;Items&gt;</span>
<span style="color: #339966;">                            &lt;Item&gt;</span>
<span style="color: #339966;">                                &lt;id&gt;5&lt;/id&gt;</span>
<span style="color: #339966;">                            &lt;/Item&gt;</span>
<span style="color: #339966;">                            &lt;Item&gt;</span>
<span style="color: #339966;">                                &lt;id&gt;6&lt;/id&gt;</span>
<span style="color: #339966;">                            &lt;/Item&gt;                            </span>
<span style="color: #339966;">                        &lt;/Items&gt;</span>
<span style="color: #339966;">                    &lt;/Item&gt;</span>
<span style="color: #339966;">                    &lt;Item&gt;</span>
<span style="color: #339966;">                        &lt;id&gt;4&lt;/id&gt;</span>
<span style="color: #339966;">                    &lt;/Item&gt;</span>
<span style="color: #339966;">                &lt;/Root&gt;";</span>

<span style="color: #339966;">            XDocument doc1 = XDocument.Parse(xml);</span>

<span style="color: #339966;">            var q1 = from e in doc1.Root.Descendants("Item")</span>
<span style="color: #339966;">                     select e;</span>

<span style="color: #339966;">            var q2 = from e in doc1.Root.Elements("Item")</span>
<span style="color: #339966;">                     select e;</span>

<span style="color: #339966;">            int c1 = q1.Count(); //6</span>
<span style="color: #339966;">            int c2 = q2.Count(); //4</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/10/10/linq-to-xml-diferencia-entre-elements-y-descendants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial sencillo de Servicio web ASP.NET</title>
		<link>http://www.alexmedina.net/blog/2011/07/29/tutorial-sencillo-de-servicio-web-asp-net/</link>
		<comments>http://www.alexmedina.net/blog/2011/07/29/tutorial-sencillo-de-servicio-web-asp-net/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 08:26:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Videos YouTube]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Servicios web]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=285</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alexmedina.net/blog/2011/07/29/tutorial-sencillo-de-servicio-web-asp-net/"><em>Pinche aquí para ver el vídeo</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/07/29/tutorial-sencillo-de-servicio-web-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema mapeo LINQ to SQL de tipo nvarchar(1) de SQLSERVER</title>
		<link>http://www.alexmedina.net/blog/2011/07/27/problema-mapeo-linq-to-sql-de-tipo-nvarchar1-de-sqlserver/</link>
		<comments>http://www.alexmedina.net/blog/2011/07/27/problema-mapeo-linq-to-sql-de-tipo-nvarchar1-de-sqlserver/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 12:02:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[SQLServer]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[DBML]]></category>
		<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=277</guid>
		<description><![CDATA["La cadena debe contener exactamente un carácter" Este es el mensaje que te aparece si has mapeado un nvarchar(1) y LINQ to SQL tiene que tratarlo cuando tiene el valor de string vacio es decir &#8220;&#8221;. Si se hace sobre el DBML: &#160; Botón derecho &#62; Abrir Con &#62; Editor XML &#160; y se busca la [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<pre><span style="color: #ff0000;"><strong>"La cadena debe contener exactamente un carácter"</strong></span></pre>
</blockquote>
<p>Este es el mensaje que te aparece si has mapeado un nvarchar(1) y LINQ to SQL tiene que tratarlo cuando tiene el valor de string vacio es decir &#8220;&#8221;.</p>
<p>Si se hace sobre el DBML:</p>
<p>&nbsp;</p>
<p>Botón derecho &gt; Abrir Con &gt; Editor XML</p>
<p>&nbsp;</p>
<p>y se busca la tabla, nos damos cuenta que se esta mapeando de esta forma:</p>
<p>&nbsp;</p>
<p><a href="http://www.alexmedina.net/blog/wp-content/uploads/2011/07/Captura1.jpg"><img class="aligncenter size-full wp-image-278" title="Captura1" src="http://www.alexmedina.net/blog/wp-content/uploads/2011/07/Captura1.jpg" alt="" width="741" height="19" /></a></p>
<p>&nbsp;</p>
<p>El problema reside en que al ser de 1 posición esta tratando el string de uno como si fuera tipo Char, la solución es editar a mano el DBML y ponerlo como tipo String:</p>
<p>&nbsp;</p>
<p><a href="http://www.alexmedina.net/blog/wp-content/uploads/2011/07/Captura2.jpg"><img class="aligncenter size-full wp-image-279" title="Captura2" src="http://www.alexmedina.net/blog/wp-content/uploads/2011/07/Captura2.jpg" alt="" width="774" height="18" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/07/27/problema-mapeo-linq-to-sql-de-tipo-nvarchar1-de-sqlserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solución error método Load de XDocument: &#8216;.&#8217;, valor hexadecimal 0&#215;00, es un carácter no válido.</title>
		<link>http://www.alexmedina.net/blog/2011/06/14/solucion-error-metodo-load-de-xdocument-valor-hexadecimal-0x00-es-un-caracter-no-valido/</link>
		<comments>http://www.alexmedina.net/blog/2011/06/14/solucion-error-metodo-load-de-xdocument-valor-hexadecimal-0x00-es-un-caracter-no-valido/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 10:13:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[caracter no valido hexadecimal]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Linq to XML]]></category>
		<category><![CDATA[Load]]></category>
		<category><![CDATA[Parse]]></category>
		<category><![CDATA[XDocument]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.alexmedina.net/blog/?p=272</guid>
		<description><![CDATA[Siempre cargaba los documentos XML del streamReader de esta forma: &#160; XDocument myXmlDocument = XDocument.Load(myReader, LoadOptions.None); Hasta que hace unos días me salía un error con un documento que decía: &#160; &#8216;.&#8217;, valor hexadecimal 0&#215;00, es un carácter no válido. Línea XXX, posición XX. (casualmente siempre me indicaba la última línea) &#160; Bueno&#8230; y como [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre cargaba los documentos XML del streamReader de esta forma:</p>
<p>&nbsp;</p>
<pre><span style="color: #339966;">XDocument myXmlDocument = XDocument.Load(myReader, LoadOptions.None);</span></pre>
<pre><span style="color: #339966;">
</span></pre>
<p>Hasta que hace unos días me salía un error con un documento que decía:</p>
<p>&nbsp;</p>
<p><strong><em>&#8216;.&#8217;, valor hexadecimal 0&#215;00, es un carácter no válido. Línea XXX, posición XX.</em></strong> (casualmente siempre me indicaba la última línea)</p>
<p>&nbsp;</p>
<p>Bueno&#8230; y como podía ser esto posible&#8230; si yo veía el XML correcto, muy bien a ciencia cierta no lo se pero encontré una solución que al menos lo que hace es eliminar todos los caracteres hexadecimales de la cadena de carga de XML.</p>
<p>&nbsp;</p>
<p>Utilizando esta función en mi caso:</p>
<pre><span style="color: #339966;">public static string CleanInvalidXmlChars(string text)        {           </span>
<span style="color: #339966;">// From xml spec valid chars:             </span>
<span style="color: #339966;">// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]                 </span>
<span style="color: #339966;">// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.             </span></pre>
<pre><span style="color: #339966;">string re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";            </span>
<span style="color: #339966;">return Regex.Replace(text, re, "");        </span>
<span style="color: #339966;">}</span></pre>
<pre><span style="color: #339966;">
</span></pre>
<p>Y cambiando el Load por el Parse:</p>
<pre><span style="color: #339966;">XDocument myXmlDocument = XDocument.Parse( CleanInvalidXmlChars(myReader.ReadToEnd()), LoadOptions.None);</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/06/14/solucion-error-metodo-load-de-xdocument-valor-hexadecimal-0x00-es-un-caracter-no-valido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizar Parallels Extensions de System.Threading en Framework .NET 3.5</title>
		<link>http://www.alexmedina.net/blog/2011/03/30/utilizar-parallels-extensions-de-system-threading-en-framework-net-3-5/</link>
		<comments>http://www.alexmedina.net/blog/2011/03/30/utilizar-parallels-extensions-de-system-threading-en-framework-net-3-5/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 10:53:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Parallels]]></category>
		<category><![CDATA[Reactive Extension]]></category>
		<category><![CDATA[RX]]></category>
		<category><![CDATA[System.Threading]]></category>

		<guid isPermaLink="false">http://alexmedina.net/blog/?p=246</guid>
		<description><![CDATA[1 -Descargar el Reactive Extensions de .NET (Rx) para 3.5: http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx 2 &#8211; Instalar el paquete .msi &#160; 3 &#8211; Importar Referencia al proyecto que queramos utilizar, la ruta donde esta instalado es: C:\Program Files (x86)\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2856.0\Net35\System.Threading.dll &#160; 4- Incluir los using: using System.Threading; using System.Threading.Tasks;   5- Documentación MSDN de Parallel: http://msdn.microsoft.com/es-es/library/system.threading.tasks.parallel.aspx]]></description>
			<content:encoded><![CDATA[<p><a href="http://alexmedina.net/blog/wp-content/uploads/2011/03/Captura.jpg"><img class="aligncenter size-full wp-image-262" title="Parallels .NET" src="http://alexmedina.net/blog/wp-content/uploads/2011/03/Captura.jpg" alt="" width="612" height="193" /></a></p>
<p>1 -Descargar el Reactive Extensions de .NET (Rx) para 3.5:<br />
<a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx</a></p>
<p><a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"></a><br />
<a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"></a>2 &#8211; Instalar el paquete .msi</p>
<p>&nbsp;</p>
<p>3 &#8211; Importar Referencia al proyecto que queramos utilizar, la ruta donde esta instalado es:<br />
C:\Program Files (x86)\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2856.0\Net35\System.Threading.dll</p>
<p>&nbsp;</p>
<p>4- Incluir los using:</p>
<pre><span style="font-size: 13px; font-weight: normal;"><span style="color: #3366ff;">using System.Threading;</span>
<span style="color: #3366ff;">using System.Threading.Tasks;</span>
 </span></pre>
<p>5- Documentación MSDN de Parallel:<a href="http://msdn.microsoft.com/es-es/library/system.threading.tasks.parallel.aspx"></p>
<p>http://msdn.microsoft.com/es-es/library/system.threading.tasks.parallel.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/03/30/utilizar-parallels-extensions-de-system-threading-en-framework-net-3-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF REST,  un OperationContract con GET y otro con POST</title>
		<link>http://www.alexmedina.net/blog/2011/03/28/wcf-rest-un-operationcontract-con-get-y-otro-con-post/</link>
		<comments>http://www.alexmedina.net/blog/2011/03/28/wcf-rest-un-operationcontract-con-get-y-otro-con-post/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 16:25:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://alexmedina.net/blog/?p=243</guid>
		<description><![CDATA[A veces por motivos de seguridad o eficiencia hay que configurar las llamadas WCF REST por GET o por POST, es altamente recomendable que las peticiones GET al servidor se hagan por GET y las SET por POST, por motivos de seguridad sobretodo. Por eficiencia es siempre mejor el GET. [ServiceContract] public interface IGasPriceService { [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: monospace;">A veces por motivos de seguridad o eficiencia hay que configurar las llamadas WCF REST por GET o por POST, es altamente recomendable que las peticiones GET al servidor se hagan por GET y las SET por POST, por motivos de seguridad sobretodo. Por eficiencia es siempre mejor el GET.</span></p>
<pre><span style="color: #339966;"><code>[ServiceContract]
public interface IGasPriceService
{
    [OperationContract]
    [<span style="text-decoration: underline;"><span style="color: #ff0000;"><strong>WebGet // ESTO ES PARA UN GET</strong></span></span>
        (RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/GetGasPrice/For/City/{city}"
        )]
    GasPriceData GetPriceDataForCity(string city);

    [OperationContract]
    [<span style="text-decoration: underline;"><span style="color: #ff0000;"><strong>WebInvoke // ESTO PARA UN POST</strong></span></span>
        (Method = "POST",
        RequestFormat = WebMessageFormat.Xml,
        UriTemplate = "/SetGasPrice/For/ZipCode/{zipCode}/Price/{price}"
        )]
    void SetPriceDataForZipCode(string zipCode, string price);
}</code></span></pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/03/28/wcf-rest-un-operationcontract-con-get-y-otro-con-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar el tamaño de las peticiones WCF REST del servicio web</title>
		<link>http://www.alexmedina.net/blog/2011/03/28/configurar-el-tamano-de-las-peticiones-wcf-rest-del-servicio-web/</link>
		<comments>http://www.alexmedina.net/blog/2011/03/28/configurar-el-tamano-de-las-peticiones-wcf-rest-del-servicio-web/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 16:19:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[servicio web]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://alexmedina.net/blog/?p=240</guid>
		<description><![CDATA[Configurar el tamaño de las peticiones WCF REST, esto se realiza en el web.config &#60;bindings&#62; &#60;basicHttpBinding&#62; &#60;binding name="LargeBuffer" ... &#60;readerQuotas  maxDepth="2147483647"  maxStringContentLength="2147483647"  maxArrayLength="2147483647" maxBytesPerRead="2147483647"  maxNameTableCharCount="2147483647" /&#62; .... &#60;/binding&#62; &#60;/basicHttpBinding&#62; &#60;/bindings&#62; &#60;services&#62; &#60;service name="WcfService4.Service1" behaviorConfiguration="WcfService4.Service1Behavior"&#62; &#60;endpoint bindingConfiguration="LargeBuffer" &#60;!-- without this, the default quota of 8192 applies --&#62; address="" binding="basicHttpBinding" contract="WcfService4.IService1"&#62; .... &#60;/endpoint&#62; &#60;endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/&#62; &#60;/service&#62; &#60;/services&#62;]]></description>
			<content:encoded><![CDATA[<p>Configurar el tamaño de las peticiones WCF REST, esto se realiza en el <strong>web.config</strong></p>
<pre><span style="color: #3366ff;">&lt;bindings&gt;
&lt;basicHttpBinding&gt;
 &lt;binding <strong>name="LargeBuffer"</strong>
</span></pre>
<pre><span style="color: #3366ff;">...</span></pre>
<pre><span style="color: #3366ff;"> &lt;readerQuotas 
 maxDepth="2147483647" 
 maxStringContentLength="2147483647" 
 maxArrayLength="2147483647"
 maxBytesPerRead="2147483647" 
 maxNameTableCharCount="2147483647" /&gt;
</span></pre>
<pre><span style="color: #3366ff;">....</span></pre>
<pre><span style="color: #3366ff;"> &lt;/binding&gt;
 &lt;/basicHttpBinding&gt;
 &lt;/bindings&gt;
 &lt;services&gt;
 &lt;service name="WcfService4.Service1" behaviorConfiguration="WcfService4.Service1Behavior"&gt;
 &lt;endpoint
 <strong>bindingConfiguration="LargeBuffer"</strong> &lt;!-- without this, the default quota of 8192 applies --&gt;
 address=""
 binding="basicHttpBinding"
 contract="WcfService4.IService1"&gt;
</span></pre>
<pre><span style="color: #3366ff;">....</span></pre>
<pre><span style="color: #3366ff;"> &lt;/endpoint&gt;
 &lt;endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/&gt;
 &lt;/service&gt;
 &lt;/services&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexmedina.net/blog/2011/03/28/configurar-el-tamano-de-las-peticiones-wcf-rest-del-servicio-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

