<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SergioTarrillo - RichWeblog : Windows Server, C#</title><link>http://geeks.ms/blogs/sergiotarrillo/archive/tags/Windows+Server/C_2300_/default.aspx</link><description>Etiquetas: Windows Server, C#</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Cuando una aplicacion deja de funcionar, por la conexion a la BD</title><link>http://geeks.ms/blogs/sergiotarrillo/archive/2008/06/12/88772.aspx</link><pubDate>Fri, 13 Jun 2008 01:08:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:88772</guid><dc:creator>Sergio Tarrillo</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/sergiotarrillo/rsscomments.aspx?PostID=88772</wfw:commentRss><comments>http://geeks.ms/blogs/sergiotarrillo/archive/2008/06/12/88772.aspx#comments</comments><description>&lt;p&gt;El otro día estaba revisando una aplicación, que inexplicablemente dejo de funcionar el acceso a datos. No se mostraba nada en la portada, no había información, -chess... nos hackearon. Pero revisando la base de datos todo estaba bien, toda la información estaba como debería estar. Era una aplicación Web de terceros, revise la configuración del proveedor de acceso a datos, y entre una de las configuraciones que era SQL Server, me decía que no se podía establecerla conexión, sin más detalles. Pero la base de datos estaba online y funcionando correctamente, comencé&amp;nbsp; a indagar cuales fueron los últimos cambios, si se instalaron add-ins, o se cambio alguna configuración, y nada.&lt;/p&gt; &lt;p&gt;Para la conexión estaba usando un login SQL, así que entre con ese usuario por el SQL Server Management Studio, y el mensaje fue clarísimo:&lt;/p&gt; &lt;p&gt;&lt;img alt="SQL Server 2005 - Your password is expired." src="http://sergiot2.com/blogimages/2008/06Jun/12_login.jpg" /&gt;&lt;/p&gt; &lt;p&gt;&amp;quot;&lt;em&gt;You password is expired. You must enter another password before you can log on&amp;quot;.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Y esto debido que durante la creación del usuario marcaron la opción, &amp;quot;&lt;strong&gt;Enforce password expiration&lt;/strong&gt;&amp;quot;:&lt;/p&gt; &lt;p&gt;&lt;img alt="SQL Server 2005 - Enforce password expiration" src="http://sergiot2.com/blogimages/2008/06Jun/12_password.jpg" /&gt;&lt;/p&gt; &lt;p&gt;Cabe resaltar que esta feature de SQL Server 2005 sólo funciona sobre Windows Server 2003 (imagino que W2k8 también debe funcionar).&lt;/p&gt; &lt;p&gt;La &lt;a title="Login Properties (General Page)" href="http://msdn.microsoft.com/en-us/library/ms189425.aspx" target="_blank"&gt;recomendación es activar esta opción&lt;/a&gt;, por medidas de seguridad. Pero imagino que cada organización tendrá sus propias políticas. Pero vamos al tema, que pasa si habilito la opción, que recomendaciones se debe tener en la aplicación.&lt;/p&gt; &lt;p&gt;¿&lt;strong&gt;Dónde cambiamos el número de días de expiración&lt;/strong&gt;?&lt;/p&gt; &lt;p&gt;Pues usa la misma política que las cuentas de Windows. Nos vamos Herramientas administrativas, e ingresamos a &lt;strong&gt;Local Security Policy&lt;/strong&gt;. Dentro de &lt;strong&gt;Account Policies&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Password Policy&lt;/strong&gt;, cambiamos los días para la edad máxima del password.&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/06Jun/12_LocalPolicy.jpg" src="http://sergiot2.com/blogimages/2008/06Jun/12_LocalPolicy.jpg" /&gt;&lt;/p&gt; &lt;p&gt;Nota: Estas son las configuraciones por defecto, no la tomen como ejemplo, aún no soy el indicado para hablar de estos temas, &lt;strike&gt;todavía no me han dado completamente un server para jugar (6)&lt;/strike&gt;. Artículo relacionado al tema: SQL &lt;a title="Server 2005 Login Properties to Enforce Password Policies and Password Expiration" href="http://www.mssqltips.com/tip.asp?tip=1088" target="_blank"&gt;Server 2005 Login Properties to Enforce Password Policies and Password Expiration&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;¿&lt;strong&gt;Y cómo le digo a la aplicación que cambie el password&lt;/strong&gt;?&lt;/p&gt; &lt;p&gt;Pues el administrador debería tenerlo agendado en el Outlook con un reminder de un par de días. Pues si no pasa esto, podemos activar alertas programáticamente, para notificar ante la necesidad de cambiar la cadena de conexión.&lt;/p&gt; &lt;div&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;    {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;      String cn = &lt;span style="color:#006080;"&gt;&amp;quot;data source=192.168.1.8; database=northwind; uid=tinysa; pwd=password&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (SqlConnection sql = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SqlConnection(cn))&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;      {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (SqlCommand cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SqlCommand(&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;                        &lt;span style="color:#006080;"&gt;&amp;quot;SELECT * FROM Customers WHERE CompanyName LIKE &amp;#39;a%&amp;#39;&amp;quot;&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;                        sql))&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;        {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;            sql.Open();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;            SqlDataReader rd = cmd.ExecuteReader();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;            Console.Write(&lt;span style="color:#006080;"&gt;&amp;quot;Customers: &amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;            &lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (rd.Read())&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;            {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;              Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;{0}, &amp;quot;&lt;/span&gt;, rd[&lt;span style="color:#006080;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;]);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;            }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;            sql.Close();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (SqlException sqlEx)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (sqlEx.Number == 18487)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt;            {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt;              &lt;span style="color:#008000;"&gt;//send email, sms a webMaster.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;              Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;El password de la conexion ha expirado&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;            }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;            Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;hubo un error: {0}&amp;quot;&lt;/span&gt;, ex.ToString());&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  36:&lt;/span&gt;        }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  37:&lt;/span&gt;      }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  39:&lt;/span&gt;      Console.ReadLine();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  41:&lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt; NOTA: El ejemplo es didáctico, la cadena de conexión debería ser colocada en el archivo web.config, y este debería &lt;a title="Cifrado de informaci&amp;oacute;n en los archivos de configuraci&amp;oacute;n de ASP.NET" href="http://geeks.ms/blogs/jalarcon/archive/2008/04/28/cifrado-de-informaci-243-n-en-los-archivos-de-configuraci-243-n-de-asp-net.aspx" target="_blank"&gt;ser encriptado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Notar que el código de Error de SQL de este mensaje es el número 18487, y si sucede este problema podemos &lt;strike&gt;enviarle un mensaje por msn, bloquearlo hasta que cambie la cadena de conexión y lo actualice en el web.config&lt;/strike&gt; configurar para enviarle un email al encargado de la Web o Aplicación, notificándole lo sucedido.&lt;/p&gt;
&lt;p&gt;Hay otros tipos de errores, que también podríamos considerar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15113&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39; Reason: Password validation failed. The account is locked out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18463&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. The password cannot be used at this time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18464&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. The password does not meet policy requirements because it is too short.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18465&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. The password does not meet policy requirements because it is too long.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18466&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. The password does not meet policy requirements because it is not complex enough.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18467&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. The password does not meet the requirements of the password filter DLL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18468&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: Password change failed. An unexpected error occurred during password validation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18487&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: The password of the account has expired.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18488&lt;/strong&gt; - Login failed for user &amp;#39;%.*ls&amp;#39;. Reason: The password of the account must be changed.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Extraído de: &lt;a title="Changing Passwords Programmatically" href="http://msdn.microsoft.com/en-us/library/ms131024.aspx" target="_blank"&gt;Changing Passwords Programmatically&lt;/a&gt;. Imaginen que el administrador creo el user, y marco la opción cambiar el password la primera vez de login, y no lo haga y nos de esa password para conectarnos a la aplicación... hay casos....&lt;/p&gt;
&lt;p&gt;Hay otra opción, y es cambiar el password a través de una página de administración. La clase &lt;strong&gt;SqlConnection&lt;/strong&gt;, tiene un método llamado &lt;strong&gt;ChangePassword&lt;/strong&gt;, para esta tarea. En &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.changepassword.aspx" target="_blank"&gt;esta referencia&lt;/a&gt; hay un código ejemplo, sólo hay que agregar la siguiente línea (la número 5):&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ModifyConnectionString(&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; connectionString, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; NewPassword)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;    {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;      &lt;span style="color:#008000;"&gt;//AGREGAR ESTA LINEA&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;      SqlConnection.ChangePassword(connectionString, NewPassword);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;      &lt;span style="color:#008000;"&gt;// Use the SqlConnectionStringBuilder class to modify the&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;      &lt;span style="color:#008000;"&gt;// password portion of the connection string. &lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;      SqlConnectionStringBuilder builder =&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SqlConnectionStringBuilder(connectionString);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;      builder.Password = NewPassword;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; builder.ConnectionString;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Es como cambiarla usando el Sql Server Management Studio, y este código podríamos incluirlo dentro de las páginas de administración, ya que necesita que algún admin ingrese el nuevo password para el usuario.&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=88772" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Ado.NET/default.aspx">Ado.NET</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/.NET/default.aspx">.NET</category></item><item><title>LDLS: ASP.NET y mas...</title><link>http://geeks.ms/blogs/sergiotarrillo/archive/2008/03/02/76086.aspx</link><pubDate>Mon, 03 Mar 2008 02:19:30 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:76086</guid><dc:creator>Sergio Tarrillo</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/sergiotarrillo/rsscomments.aspx?PostID=76086</wfw:commentRss><comments>http://geeks.ms/blogs/sergiotarrillo/archive/2008/03/02/76086.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;[LDLS] -&amp;gt; &lt;/strong&gt;Links de la semana. Y es que a veces se leen muchos recursos en el RSS, que se lo deja como pendiente en los drafts del &lt;a href="http://geeks.ms/blogs/sergiotarrillo/search.aspx?q=Writer" target="_blank"&gt;Writer&lt;/a&gt;, y casi nunca llegan a ser p&amp;#250;blicos. Es por eso que ahora tratare de hacer una lista de links de la semana, que por cuestiones de tiempo no se puede postear cada una a detalle. Algunos links son de novedades, otros de algunos art&amp;#237;culos que he llegado y me han parecido interesantes. Por cierto no revisen todas las entradas, s&amp;#243;lo las que necesiten, ya pueden llegar a no revisar nada al final.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ASP.NET, AJAX y BLOCKED SCRIPT&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://geeks.ms/blogs/jalarcon/archive/2008/03/02/trabajo-con-javascript-en-visual-studio-2008-lo-que-no-v-237-steis-en-el-evolution-show.aspx" target="_blank"&gt;Trabajo con JavaScript en Visual studio 2008&lt;/a&gt;. &lt;a href="http://geeks.ms/blogs/jalarcon/default.aspx" target="_blank"&gt;Jos&amp;#233; M. Alarc&amp;#243;n&lt;/a&gt;, nos deja un interesante v&amp;#237;deo del soporte y uso JavaScript en VS2008, como llamada a Web Services, el soporte de intellsense, el debugging, entre otras.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://joeon.net/post/2008/02/2-New-AJAX-How-Do-I-Videos-Released.aspx" target="_blank"&gt;2 New AJAX How-Do-I Videos Released&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://joeon.net/post/2008/02/New-4-part-series-of-videos-on-DOWNLOADING-with-ASPNET.aspx" target="_blank"&gt;New 4 part series of videos on DOWNLOADING with ASP.NET&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/ms178207.aspx" target="_blank"&gt;C&amp;#243;mo: Agregar secuencias de comandos de cliente a las p&amp;#225;ginas Web ASP.NET din&amp;#225;micamente&lt;/a&gt;. Cuadro comparativo de cuando usar &lt;a href="http://msdn2.microsoft.com/es-es/library/xtee7dtx.aspx"&gt;RegisterClientScriptBlock&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-es/library/5b0f026w.aspx"&gt;RegisterClientScriptInclude&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-es/library/hab26949.aspx"&gt;RegisterStartupScript&lt;/a&gt;, y &lt;a href="http://msdn2.microsoft.com/es-es/library/2sbxhctc.aspx"&gt;RegisterOnSubmitStatement&lt;/a&gt;, al momento de querer registrar JavaScript del lado del cliente. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc164247.aspx" target="_blank"&gt;Modal Dialog Boxes with AJAX&lt;/a&gt;. Un art&amp;#237;culo de Dino Esposito.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msmvps.com/blogs/abu/archive/2008/03/01/windows-authentication-asp-net-and-iis.aspx" target="_blank"&gt;Windows Authentication - ASP.NET and IIS&lt;/a&gt;. Un resumen de links para los interesados.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pageresource.com/jscript/jwinopen.htm" target="_blank"&gt;Opening a New Window&lt;/a&gt; - Abrir ventanas en JavaScript. No es un recurso nuevo, pero es bueno tenerlo a la mano. B&amp;#225;sico cuando queremos mostrar informaci&amp;#243;n de un detalle en otra ventana. Y para eso no vas poner una url, o usar un Response.Redirect, con javascript es una forma simple y pr&amp;#225;ctica de hacerlo. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pageresource.com/jscript/jlinktut.htm" target="_blank"&gt;Using Link Tags with JavaScript&lt;/a&gt; - Has registrado JavaScript con botones de ASP.NET?, para abrir una ventana la p&amp;#225;gina que abre la ventana hace un postback?, no quieres un bot&amp;#243;n para abrir una nueva ventana, si no un link?, pues usando links puedes llamar a JavaScript, que a su vez abra una nueva ventana. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/dropthings"&gt;Dropthings - Ajax Web Portal&lt;/a&gt;. No lo he revisado, pero esta es su descripci&amp;#243;n: &amp;quot;&lt;em&gt;Ajax Web Portal built on Linq, Workflow Foundation and ASP.NET AJAX. Code is in Visual Studio 2008 using .NET 3.0 and .NET 3.5&lt;/em&gt;.&amp;quot;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=165715" target="_blank"&gt;YUI Library 2.5.0&lt;/a&gt;. &lt;a href="http://developer.yahoo.com/yui/" target="_blank"&gt;Nuevo versi&amp;#243;n&lt;/a&gt;, he visto algunas p&amp;#225;ginas web en ASP.NET que usan esta librar&amp;#237;a, no esta dem&amp;#225;s echarle un vistazo.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Linq&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032369931&amp;amp;culture=en-US" target="_blank"&gt;MSDN Webcast: .NET Language Integrated Query (Level 100)&lt;/a&gt;. Un excelente WebCast sobre Linq, yo lo llamar&amp;#237;a abre los ojos con Linq. S&amp;#243;lo 5 slides (una con el t&amp;#237;tulo, una intro, una de arquitectura, una anunciando la demo, y los cr&amp;#233;ditos), y el resto demos, una simple y pr&amp;#225;ctica manera de presentar a Linq por parte de &lt;a href="http://blogs.msdn.com/bags/" target="_blank"&gt;Rob Bagby&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2008/03/02/extensibilidad-de-linq-linq-flavours.aspx" target="_blank"&gt;Extensibilidad de LINQ: LINQ Flavours!&lt;/a&gt;. Linq to LQSTO. (LQSTO -&amp;gt; lo que se te ocurra)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/csharpsamples" target="_blank"&gt;C# Samples&lt;/a&gt;. V&amp;#237;a &lt;a href="http://code.msdn.microsoft.com/" target="_blank"&gt;MSDN Code Gallery&lt;/a&gt;, estos contienen las nuevas features de C# 3.0, y sobre todo ejemplos de Linq. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;VS2008, IIS, W2k8&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/PowerCommands" target="_blank"&gt;PowerCommands for Visual Studio 2008&lt;/a&gt;. Puede leer esta &lt;a href="http://geeks.ms/blogs/elbruno/archive/2008/03/01/vs2008-powercommands-for-visual-studio-2008-released-rico-en-fibras-y-proteinas.aspx" target="_blank"&gt;entrada que hizo el Bruno&lt;/a&gt;, no son las grandes ni complejos comandos, son peque&amp;#241;os comandos que sumados elevan la productividad un mont&amp;#243;n, por citar uno: &lt;em&gt;&amp;quot;Open Containing Folder&amp;quot;,&lt;/em&gt; b&amp;#225;sico cuantas veces tienes que irte a las propiedades del proyecto, copiar la ruta, y navegar hasta el archivo?, y as&amp;#237; hay otros comando bien powers.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://davidhayden.com/blog/dave/archive/2008/02/28/WebClientSoftwareFactoryWCSF2VisualStudio2008FreeWCSFTraining.aspx" target="_blank"&gt;Web Client Software Factory ( WCSF ) v2.0 Released for Visual Studio 2008 - Free WCSF Training&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://davidhayden.com/blog/dave/archive/2008/02/21/DinnerNowReleasedVisualStudio2008NET35Framework.aspx" target="_blank"&gt;DinnerNow Released for Visual Studio 2008 and .NET 3.5 Framework&lt;/a&gt;. A ver si esta vez hago funcionar esta aplicaci&amp;#243;n :D.&lt;/li&gt;    &lt;li&gt;[MSDN Webcast]: &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032369518&amp;amp;CountryCode=US" target="_blank"&gt;Web Development Using Visual Studio 2008&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;[MSDN Webcast]: &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=es-AR&amp;amp;EventID=1032366699&amp;amp;CountryCode=AR" target="_blank"&gt;Desarrollando aplicaciones bajo IIS 7.0 (nivel 200)&lt;/a&gt;. &lt;a href="http://msmvps.com/blogs/cwalzer/default.aspx" target="_blank"&gt;Carlos Walzer&lt;/a&gt;, nos ha compartido los recursos del WebCast en &lt;a href="http://msmvps.com/blogs/cwalzer/archive/2008/02/27/conferencia-materiales-de-desarrollando-aplicaciones-en-iis-7-0.aspx" target="_blank"&gt;esta entrada&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx" target="_blank"&gt;First Look at Silverlight 2&lt;/a&gt; - &lt;a href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank"&gt;ScottGu&amp;#39;s&lt;/a&gt; nos cuenta que habr&amp;#225; de nuevo en la versi&amp;#243;n Silverlight 2. Adem&amp;#225;s nos deja un serie de 8 tutoriales de Silverlight 2. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx" target="_blank"&gt;First Look at Using Expression Blend with Silverlight 2&lt;/a&gt;. &lt;a href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank"&gt;ScottGu&amp;#39;s&lt;/a&gt;, nos dejan un tutorial de Silverlight 2 con Blend, y como siempre los tutos de Scott, son otro lote.&lt;/li&gt;    &lt;li&gt;[Wicked Code]: &lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc164249.aspx" target="_blank"&gt;Silverlight Tips, Tricks, and Best Practices&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Variados:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/CSharpGmail" target="_blank"&gt;C# .Net Gmail Tools&lt;/a&gt;. Una librer&amp;#237;a de clases para Gmail, para enviar emails usando Gmail, y para leer los feeds de Gmail. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032290418" target="_blank"&gt;TechNet Virtual Lab: SQL Server 2005 SQL Query Tuning&lt;/a&gt;. Interesante Virtual Lab, nos muestra el uso de algunas herramientas como el &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/07/07/19011.aspx" target="_blank"&gt;SQL Profiler&lt;/a&gt; y &lt;a href="http://msdn2.microsoft.com/en-us/library/ms173494.aspx" target="_blank"&gt;Tuning Advisor&lt;/a&gt;, tambi&amp;#233;n se analiza el plan de ejecuci&amp;#243;n.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ExtendedCopyMenu" target="_blank"&gt;Internet Explorer &amp;amp; Firefox - Copy as Plain Text/Html Context Menu Plugin&lt;/a&gt;. El nombre es claro no?. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsserver2008/en/us/trial-software.aspx" target="_blank"&gt;Download Windows Server 2008&lt;/a&gt;. Descarga la versi&amp;#243;n de Windows Server 2008, en versi&amp;#243;n trial.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Humor&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://keeskandalo.blogspot.com/2008/02/consejo-para-la-vida-5-el-intentar.html" target="_blank"&gt;PC Port&amp;#225;til&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://keeskandalo.blogspot.com/2008/02/cuidado-con-el-cybersexo.html" target="_blank"&gt;Cuidado con el cybersexo&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=76086" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Rapitools/default.aspx">Rapitools</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/IIS/default.aspx">IIS</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/WebCast/default.aspx">WebCast</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/ASP.NET+AJAX/default.aspx">ASP.NET AJAX</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/humor/default.aspx">humor</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Patterns+and+Practices/default.aspx">Patterns and Practices</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Samples+WebSite/default.aspx">Samples WebSite</category><category domain="http://geeks.ms/blogs/sergiotarrillo/archive/tags/LDLS/default.aspx">LDLS</category></item></channel></rss>