<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">ISAKO&amp;#39;s Blog</title><subtitle type="html">Blog de Isaac Fernandez sobre el mundillo tecnológico y sus circunstancias 
</subtitle><id>http://geeks.ms/blogs/ifernandez/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/ifernandez/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/ifernandez/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2007-03-22T17:30:00Z</updated><entry><title>Levantando la cabeza y viendo más avances :) Monotouch/MonoDroid</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2012/02/21/levantando-la-cabeza-y-viendo-m-225-s-avances-monotouch-monodroid.aspx" /><id>/blogs/ifernandez/archive/2012/02/21/levantando-la-cabeza-y-viendo-m-225-s-avances-monotouch-monodroid.aspx</id><published>2012-02-21T10:51:00Z</published><updated>2012-02-21T10:51:00Z</updated><content type="html">&lt;p&gt;Aunque ya lleva un tiempo us&amp;aacute;ndose, la verdad es que el enclaustramiento habitual al que uno se ve obligado por los requerimientos del d&amp;iacute;a a d&amp;iacute;a, hace que cuando tenga un hueco para levantar la cabeza se sorprenda con proyectos como &amp;quot;MonoTouch&amp;quot; que para los que no conozcan muy bien de qu&amp;eacute; se trata podr&amp;iacute;a resumirse diciendo que es una plataforma a trav&amp;eacute;s de la cual podremos desarrollar aplicaciones para iOS, usando C#, lenguaje sin duda much&amp;iacute;simo m&amp;aacute;s trillado, probado y conocido que el que han intentado meter con calzador desde apple, de Objetive-C.&lt;br /&gt;&lt;br /&gt;El IDE que se ha proporcionado para programar bajo esta platadorma se denomina MonoDevelop y para los programadores de tecnolog&amp;iacute;as microsoft les sonar&amp;aacute; debido a su gran parecido a VisualStudio. La ultima versi&amp;oacute;n estable es la 2.10.8 y est&amp;aacute; disponible para platadormas OpenSuse, Windows, Mac OS X, Windows y Solaris.&lt;br /&gt;&lt;br /&gt;Pero esto no es todo, ya se me han caido las bragas cuando leo sobre MonoDroid, a trav&amp;eacute;s del cual se dar&amp;aacute; soporte tb para el desarrollo de aplicaciones para android.&lt;br /&gt;&lt;br /&gt;Resumiendo, que a partir de una sola plataforma y de un lenguaje unificado, podremos realizar aplicaciones portables a cualquier tipo de dispositivo del mercado, veremos si los conflictos legales por la famosa clausula 3.3.1 de Jobs (http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/)&amp;nbsp; por la que se obliga a usar &amp;uacute;nicamente ciertos lenguajes de programaci&amp;oacute;n para iOS no da al traste con este m&amp;aacute;s que interesant&amp;iacute;simo proyecto.&lt;br /&gt;&lt;br /&gt;Dejo una recopilaci&amp;oacute;n de enlaces, para aquellos que les interese el tema y para los que como yo, quieran empezar a pegarse con el:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P&amp;aacute;gina oficial de MonoTouch:&lt;/b&gt;&lt;br /&gt;http://www.mono-project.com/Main_Page&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Blog de Miguel Icaza, lider del proyecto mono:&lt;/b&gt;&lt;br /&gt;http://tirania.org/blog/&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Conectandome mediante C# a webservices y haci&amp;eacute;ndoles correr en iOS:&lt;/b&gt;&lt;br /&gt;
http://alexsoto.me/uso-de-webservices-en-monotouch-usando-csharp-desde-el-iphone#more-63&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Acceso a MySql desde iphone:&lt;/b&gt;&lt;br /&gt;
http://alexsoto.me/mysql-desde-el-iphone#more-94&lt;/p&gt;
&lt;p&gt;&lt;b&gt;M&amp;aacute;s informaci&amp;oacute;n y ejemplos:&lt;/b&gt;&lt;br /&gt;http://xamarin.com/monotouch&lt;br /&gt;http://monotouchexamples.com/&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;Gracias a LA.Rodriguez Castro por su comentario acerca de otra posibilidad de utilizar otros FW alternativos, a partir de los cuales podemos simplificar la dificultdad de tener una base de c&amp;oacute;digo com&amp;uacute;n para todos los tipos de plataformas como CellSDK &amp;quot;&lt;a href="http://www.cellsdk.com/" target="_blank"&gt;http://www.cellsdk.com/&lt;/a&gt;&amp;quot; (el cual habr&amp;aacute; que investigar :D)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203477" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author></entry><entry><title>Native Expressions 1.0</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2011/02/25/native-expressions-1-0.aspx" /><id>/blogs/ifernandez/archive/2011/02/25/native-expressions-1-0.aspx</id><published>2011-02-25T12:12:00Z</published><updated>2011-02-25T12:12:00Z</updated><content type="html">&lt;p&gt;Anunciado Native Expressions 1.0 for Silverlight. &lt;/p&gt;
&lt;p&gt;Toolkit que nos permitir&amp;aacute; que nuestras aplicaciones silverlight en OOB, puedan acceder a m&amp;aacute;s variables del entorno de ejecuci&amp;oacute;n, tales como GPS etc.&lt;/p&gt;
&lt;p&gt;Para m&amp;aacute;s info &lt;a target="_blank" title="Native Expressions 1.0" href="http://archive.msdn.microsoft.com/nesl"&gt;Native Expressions 1.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=189580" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="SilverLight" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/SilverLight/default.aspx" /></entry><entry><title>Access HttpContext from Silverlight</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2011/01/25/silverlight-access-to-httpcontext.aspx" /><id>/blogs/ifernandez/archive/2011/01/25/silverlight-access-to-httpcontext.aspx</id><published>2011-01-25T08:32:00Z</published><updated>2011-01-25T08:32:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/1.jpg"&gt;


 
  
  
 

 
  
   
   
   
   
   
   
   
   
   
   
   
  

 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 



 

 
  
 
&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;1&amp;ordm; Introducci&amp;oacute;n Silverlight SandBox&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Silverlight es un plugin dise&amp;ntilde;ado para ser &amp;ldquo;ultra&amp;rdquo; seguro,
tanto, que desde una aplicaci&amp;oacute;n silverlight no podemos acceder a priori, a
Dll&amp;rsquo;s que no est&amp;eacute;n autorizadas para usar desde los proyectos de tipo
Silverlight de visualStudio, por ejemplo, no podemos acceder a una capa de BLL
o a una DAL sencillita, si esta no est&amp;aacute; dentro del proyecto Silverlight, y
todos los accesos que queramos hacer a trav&amp;eacute;s de estos, tendr&amp;aacute;n que ser v&amp;iacute;a
Servicios, POST, REST etc..&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Silverlight adem&amp;aacute;s, se ejecuta de forma aislada, es decir,
que no sabe d&amp;oacute;nde se est&amp;aacute; ejecutando, ni quien lo hace, ya que es un plugin que
puede ejecutarse tanto desde un explorador web como desde el propio escritorio
de Windows.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;2&amp;ordm; Problem&amp;aacute;tica en el acceso a datos&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Imaginemos una simple consulta en la que a partir del
usuario con el que estoy logado, quiero ver mis facturas de la luz (antes de
ser estoicamente violadas por el nuevo subid&amp;oacute;n de casi un 10% en tiempos de
crisis xd). C&amp;oacute;mo le mandar&amp;iacute;a a la select en cuesti&amp;oacute;n el usuario que est&amp;aacute;
ejecutando la aplicaci&amp;oacute;n por ejemplo el HttpContext.Current.User.Identity.Name , si desde el control silverlight no s&amp;eacute; qui&amp;eacute;n est&amp;aacute;
ejecutando la aplicaci&amp;oacute;n, ni siquiera d&amp;oacute;nde se est&amp;aacute; ejecutando el mismo &amp;iquest;?,
c&amp;oacute;mo veis surge un problemilla...&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Bien, la respuesta es simple. &lt;b&gt;Es imposible&lt;/b&gt;, por lo menos de una manera elegante y segura, digo
esto ya que podr&amp;iacute;a &amp;ldquo;&amp;ntilde;apearse&amp;rdquo; el canal de comunicaci&amp;oacute;n exitente entre el DOM
reenderizado de la p&amp;aacute;gina que lo contiene y la ejecuci&amp;oacute;n del mismo control, a
partir de los &lt;b&gt;&lt;i&gt;initParams&lt;/i&gt;&lt;/b&gt; del Object que embeber&amp;aacute; el ActiveX, pudiendo as&amp;iacute;
hacer una llamada &amp;ldquo;customizada&amp;rdquo; al servicio WCF que lanzar&amp;aacute; la select, pero el
problema es que se descubrir&amp;iacute;an los datos de la comunicaci&amp;oacute;n en el DOM de la
p&amp;aacute;gina.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Dicho esto, empec&amp;eacute; a mirar alternativas llegando a la
conclusi&amp;oacute;n de que lo mejor, no era hacer que el control Silverlight supiera qui&amp;eacute;n
o c&amp;oacute;mo se est&amp;aacute; ejecutando, usemos el control
como lo que es, un control que no tiene que saber ning&amp;uacute;n dato de negocio,
trat&amp;eacute;mosle como si fuera una capa de presentaci&amp;oacute;n tonta e independiente.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Pero ojo, si estamos usando esa especie de careta para
obtener datos de negocio, c&amp;oacute;mo conseguiremos llegar a nuestra capa de datos con
lo necesario &amp;iquest;?, pues simple, haciendo que sea la propia capa de acceso a datos,
la que sepa c&amp;oacute;mo se est&amp;aacute; ejecutando, es decir. El control silverlight acceder&amp;aacute;
a los datos a trav&amp;eacute;s de un servicio WCF y &lt;b&gt;ser&amp;aacute;
este el que sea capaz de saber d&amp;oacute;nde, &amp;nbsp;c&amp;oacute;mo y qui&amp;eacute;n lo est&amp;aacute; ejecutando&lt;/b&gt;, a trav&amp;eacute;s
del contexto en el que st&amp;aacute; ejecutandose, para ello &lt;b&gt;el servicio se publicar&amp;aacute; dentro del mismo site que usa los distintos
controles silverlight&lt;/b&gt;, de tal manera, que la publicaci&amp;oacute;n atender&amp;iacute;a a la
ilustraci&amp;oacute;n 1:&lt;/p&gt;
&lt;p class="MsoCaption"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/1.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/1.jpg" border="0" width="443" height="387" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoCaption" style="text-align:center;" align="center"&gt;&lt;span style="font-size:medium;"&gt;Ilustraci&amp;oacute;n 1&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;3&amp;ordm; Servicios publicados dentro del Site:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Esta es una de las m&amp;uacute;ltiples maneras que existen para
securizar un servicio web. Si este &lt;b&gt;&amp;uacute;nicamente
va a ser accesible desde una aplicaci&amp;oacute;n&lt;/b&gt; puede publicarse en el mismo
entorno de ejecuci&amp;oacute;n de la misma. De tal forma que heredar&amp;iacute;a la seguridad impl&amp;iacute;cita
de la aplicaci&amp;oacute;n y tendr&amp;iacute;a acceso al contexto. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;De esta manera, matar&amp;iacute;amos dos p&amp;aacute;jaros de un tiro, ya que
siempre que alguien llame a ese servicio, si antes no se ha validado en la
aplicaci&amp;oacute;n en cuesti&amp;oacute;n, no podr&amp;aacute; invocarlo, y por otro lado, cuando nuestro
control silverlight lo invoque, este podr&amp;aacute; obtener los datos que dependen del usuario que lo ejecuta.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;La idea podr&amp;iacute;a representarse esquem&amp;aacute;ticamente de la
siguiente manera:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/2.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/2.jpg" border="0" width="463" height="212" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoCaption" style="text-align:center;" align="center"&gt;&lt;span style="font-size:medium;"&gt;Ilustraci&amp;oacute;n 2&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Hay que destacar que para que esta arquitectura funcione,
los servicios deben tener una configuraci&amp;oacute;n un tanto especial, para que puedan
&amp;ldquo;saber leer su entorno&amp;rdquo;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Para ello bastar&amp;aacute; con:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0.0001pt 36pt;text-indent:-18pt;line-height:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Habilitar el atributo &lt;span style="color:black;"&gt;AspNetCompatibilityRequirements&lt;/span&gt;.&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0.0001pt 36pt;line-height:normal;"&gt;
 
 
 
  
  
&lt;table cellpadding="0" cellspacing="0" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;[&lt;span style="color:#2b91af;"&gt;AspNetCompatibilityRequirements&lt;/span&gt;(RequirementsMode
    = &lt;span style="color:#2b91af;"&gt;AspNetCompatibilityRequirementsMode&lt;/span&gt;.Allowed)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;public&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt;
Servicio1: &lt;span style="color:#2b91af;"&gt;iServicio1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;text-indent:35.4pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;public&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt;
    GetHttpContextUser()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;text-indent:35.4pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0.0001pt 35.4pt;text-indent:35.4pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;if&lt;/span&gt;&lt;span lang="EN-US"&gt; (!System.Web.&lt;span style="color:#2b91af;"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.IsAuthenticated)
    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0.0001pt 70.8pt;text-indent:35.4pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;throw&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; Exception();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt;
    System.Web.&lt;span style="color:#2b91af;"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.Name;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;span style="color:black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;span style="font-size:10pt;font-family:Consolas;color:black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin-bottom:0.0001pt;text-indent:-18pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="font-size:small;"&gt; b)&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:black;"&gt;Agregar el elemento &lt;b&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;serviceHostingEnvironment&amp;gt;&lt;/span&gt;&lt;/b&gt;
a la configuraci&amp;oacute;n del servicio, en la secci&amp;oacute;n &lt;b&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&amp;lt;system.serviceModel&amp;gt;&lt;/span&gt;&lt;/b&gt;,
para habilitar la compatibilidad con ASP.NET.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin-bottom:0.0001pt;text-indent:-18pt;line-height:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 9pt 36pt;line-height:normal;"&gt;
 
  
  
&lt;table style="height:71px;" cellpadding="0" cellspacing="0" width="538"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;"&gt;serviceHostingEnvironment&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt; &lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:red;"&gt;aspNetCompatibilityEnabled&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;=&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;span style="font-size:10pt;font-family:Consolas;color:black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="font-family:Consolas;color:black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;4. Arquitectura l&amp;oacute;gica de publicaci&amp;oacute;n:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Atendiendo a esta idea, podr&amp;iacute;amos tener varias opciones a la
hora de montar una arquitectura optima de petici&amp;oacute;n / respuesta, de las que
destacar&amp;eacute; dos:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="color:#548dd4;"&gt;4.1 Acceso
Directo:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;He denominado &lt;i&gt;Acceso
Directo&lt;/i&gt; a la opci&amp;oacute;n que podemos apreciar en la &lt;i&gt;Ilustraci&amp;oacute;n 3&lt;/i&gt;.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/3.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/3.jpg" border="0" width="396" height="252" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoCaption" style="text-align:center;" align="center"&gt;&lt;span style="font-size:medium;"&gt;Ilustraci&amp;oacute;n 3&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Como podemos ver, los distintos servicios WCF se ejecutan
dentro del entorno de la aplicaci&amp;oacute;n del Portal,y el control
Silverlight accede directamente a los mismos. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Como se comentaba anteriormente, al estar ejecut&amp;aacute;ndose
dentro del entorno de la aplicaci&amp;oacute;n, (a no ser que se le especifique lo
contrario), cualquier petici&amp;oacute;n que se haga a los mismos, deber&amp;iacute;a estar
autenticada a trabes del Membership de seguridad del portal. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;En estos servicios web, estar&amp;aacute; la l&amp;oacute;gica de negocio
necesaria para aislar la Interfaz de usuario en Silverlight de la capa de
datos. Con esta soluci&amp;oacute;n resolver&amp;iacute;amos los dos problemas que se nos plantean:&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;
&lt;/span&gt;Servicios que conocen el contexto desde el que
se les est&amp;aacute; llamando y &lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;Servicios securizados a los que no se les puede
llamar si no estas autenticado en la aplicaci&amp;oacute;n.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Pero hay algo importante a destacar, y es que esta soluci&amp;oacute;n
plantea un problema. Y es que en los servidores con IIS6 y un Framework
inferior al 4.0, &lt;b&gt;existe un BUG&lt;/b&gt;, que
consiste en que cuando un IIS aloja una aplicaci&amp;oacute;n web y esta hace una petici&amp;oacute;n
a un servicio que cuelga de la misma aplicaci&amp;oacute;n, recibe varias BaseAddress y no
es capaz de resolver cu&amp;aacute;l es la que se corresponde a la de la petici&amp;oacute;n del
servicio provocando un error de aplicaci&amp;oacute;n 500 poco descriptivo. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Este Bug ya lo he solucionado, a&amp;nbsp; trav&amp;eacute;s de sobrescribir el m&amp;eacute;todo &lt;b&gt;&lt;span style="color:#17365d;"&gt;CreateServiceHost &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;(http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.servicehostfactory.createservicehost.aspx)&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10pt;line-height:115%;color:#17365d;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;span style="color:#17365d;"&gt;de &lt;/span&gt;&lt;span style="color:#17365d;"&gt;WebScriptServiceHostFactory&lt;b&gt;,&lt;/b&gt; &amp;nbsp;que es el que se encarga de establecer las
baseaddress. Haciendo que cuando existan varias peticiones, tu establezcas cual
es la que te interesa. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#17365d;"&gt;La explicaci&amp;oacute;n de la soluci&amp;oacute;n
de dicho BUG son dos simples pasos:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#17365d;"&gt;1&amp;ordm; &lt;/span&gt;&lt;span style="color:#17365d;"&gt;Le decimos a
nuestro servicio que su Factory, ahora ser&amp;aacute; nuestro CustomHostFactory&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#17365d;"&gt; &lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
 
  
  
&lt;table style="height:59px;" cellpadding="0" cellspacing="0" width="701"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="line-height:115%;background:none repeat scroll 0% 0% yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="line-height:115%;color:blue;"&gt;@&lt;/span&gt;&lt;span style="line-height:115%;"&gt; &lt;span style="color:#a31515;"&gt;ServiceHost&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt;
    &lt;span style="color:red;"&gt;Debug&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;
    &lt;span style="color:red;"&gt;Service&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Portal.WebIU.WebServices.SilverlightServices.Servicio.Servicio1&amp;quot;&lt;/span&gt;
    &lt;span style="color:red;"&gt;CodeBehind&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Servicio1.svc.cs&amp;quot;&lt;/span&gt;
    &lt;span style="color:red;"&gt;Factory&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Portal.WebIU.AppCode.CustomHostFactory&amp;quot;&lt;/span&gt;
    &lt;span style="background:none repeat scroll 0% 0% yellow;"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#17365d;"&gt;2&amp;ordm; Creamos nuestro &lt;b&gt;CustomHostFactory&lt;/b&gt;
y s&lt;/span&gt;&lt;span style="color:#17365d;"&gt;obrescribimos el
m&amp;eacute;todo &lt;/span&gt;&lt;b&gt;CreateServiceHost&lt;/b&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
 
  
  
&lt;table style="height:561px;" cellpadding="0" cellspacing="0" width="740"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Collections.Generic;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Linq;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Web;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.ServiceModel.Activation;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;" lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.ServiceModel;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; Portal.WebIU.AppCode&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;" lang="EN-US"&gt;public&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;CustomHostFactory&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;WebScriptServiceHostFactory&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;protected&lt;/span&gt;
    &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ServiceHost&lt;/span&gt;
    CreateServiceHost(&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; serviceType,&amp;nbsp; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;[]
    baseAddresses)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;[]
    newUri;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;if&lt;/span&gt;
    (baseAddresses.Length &amp;gt; 1)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newUri = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;[] &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;text-indent:35.4pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;{ &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;URL/Servicio1.svc&amp;quot;&lt;/span&gt;)};&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;else&lt;/span&gt;
    { newUri = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;[]
    { baseAddresses[0] };}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt;
    &lt;span style="color:blue;"&gt;base&lt;/span&gt;.CreateServiceHost(serviceType,
    newUri);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="line-height:115%;"&gt;}&lt;/span&gt;&lt;span style="color:#17365d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color:#17365d;"&gt;Como comentaba, se
supone que este bug ya est&amp;aacute; arreglado para servidores con IIS7 y FW4.0 (repito
lo de, se supone)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="color:#548dd4;"&gt;4.2 Acceso Bridge:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Otra arquitectura posible es la de utilizar un servicio
puente, a trav&amp;eacute;s del cual obtengamos el HTTPContext para despu&amp;eacute;s llamar a X
servicios que pudieran estar fuera del entorno de la aplicaci&amp;oacute;n como se muestra
en la &lt;i&gt;Ilustraci&amp;oacute;n 4&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="page-break-after:avoid;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoCaption"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/4.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/ifernandez/4.jpg" border="0" width="461" height="349" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoCaption" style="text-align:center;" align="center"&gt;Ilustraci&amp;oacute;n 4&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;Los problemas que
pudieran derivarse de esta opci&amp;oacute;n son:&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; a)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Pol&amp;iacute;tica de CrossDomain&lt;/b&gt; (si se
configura bien, no deber&amp;iacute;a ser un problema):&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-left:35.4pt;"&gt;Para que el control Silverlight
tenga acceso a los servicios web externos, estos deber&amp;aacute;n tener como m&amp;iacute;nimo una pol&amp;iacute;tica
de CrossDomain, permitiendo el acceso a aquellas peticiones que vengan desde el
dominio de PortalMediadores.&lt;/p&gt;
&lt;p class="MsoListParagraph" style="text-indent:-18pt;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b)&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Servicios Securizados&lt;/b&gt;: Estos servicios
externos, estar&amp;iacute;an expuestos &lt;b&gt;en principio&lt;/b&gt;, de manera publica, de tal manera que
cualquiera que conozca las direcciones de los mismos podr&amp;aacute; llamarlos y obtener&amp;nbsp;
informaci&amp;oacute;n sensible sin ning&amp;uacute;n problema. Para ello habr&amp;iacute;a que encriptar
informaci&amp;oacute;n, establecer alg&amp;uacute;n proxy, firewalls de acceso, o establecer otras pol&amp;iacute;ticas
de securizaci&amp;oacute;n de WCF.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span style="line-height:115%;color:#17365d;"&gt;5. Arquitectura recomendada&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Atendiendo a lo explicado anteriormente se recomienda una
arquitectura de acceso directo por los siguientes motivos:&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Seguridad:&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;En el acceso directo, la conexi&amp;oacute;n siempre
viene securizada a trav&amp;eacute;s del provider de autenticaci&amp;oacute;n del portal, por lo que
se pueden evitar ciertos usos fraudulentos del portal.&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;"&gt;&lt;b&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Centralizaci&amp;oacute;n de despliegue:&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;Al desplegar todo en un mismo site, los
posibles problemas o incidencias estar&amp;aacute;n mucho m&amp;aacute;s centralizados, y se evitar&amp;aacute;
el acoplamiento entre distintos servidores. Lo que para mi es una ventaja a la
hora de desplegar servicios que van a ser consumidos &amp;uacute;nicamente por un site&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recomendaciones &amp;ldquo;oficiales&amp;rdquo;:&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;http://msdn.microsoft.com/en-us/library/dd560702%28VS.95%29.aspx&lt;/p&gt;
&lt;p&gt;P.D: Que conste que esta fue una soluci&amp;oacute;n de ida de hoya personal, por lo que es posible que sea un poco &amp;quot;&amp;ntilde;apa&amp;quot;, &amp;quot;estupided&amp;quot; o vete tu a saber... pero en las aplicaciones en las que ha sido implementada, puedo garantizar, que a funcionado a la perfecci&amp;oacute;n. Se agradecer&amp;aacute; cualquier correci&amp;oacute;n / aportaci&amp;oacute;n sobre otras posibles soluciones :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=187891" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Web Services" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Web+Services/default.aspx" /><category term="Desarrollo Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Desarrollo+Web/default.aspx" /><category term="SilverLight" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/SilverLight/default.aspx" /></entry><entry><title>Silverlight 4 Training Course in Channel9</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/12/17/silverlight-4-training-course-in-channel9.aspx" /><id>/blogs/ifernandez/archive/2009/12/17/silverlight-4-training-course-in-channel9.aspx</id><published>2009-12-17T09:59:00Z</published><updated>2009-12-17T09:59:00Z</updated><content type="html">&lt;p&gt;Interesante el enlace, que me llegaba esta ma&amp;ntilde;ana sobre un curso en Channel 9 sobre Silverlight 4, con ejemplos y documentaci&amp;oacute;n de esta nueva versi&amp;oacute;n de la Luz Plateada, sin duda habr&amp;aacute; que escudri&amp;ntilde;ar todos los videos y tutoriales que nos aportan.&lt;/p&gt;
&lt;p&gt;Para m&amp;aacute;s info sobre el &lt;a href="http://channel9.msdn.com/learn/courses/Silverlight4/"&gt;curso de silverlight 4&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=162787" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author></entry><entry><title>Fast Tricks: Assembly bindingRedirect</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/12/09/fast-tricks-assembly-bindingredirect.aspx" /><id>/blogs/ifernandez/archive/2009/12/09/fast-tricks-assembly-bindingredirect.aspx</id><published>2009-12-09T14:07:00Z</published><updated>2009-12-09T14:07:00Z</updated><content type="html">&lt;p&gt;Otro truquito bastante elemental, pero que no suele usarse tal vez por desconocimiento, es la posibilidad de poder redireccionar distintas versiones de assemblys a una versi&amp;oacute;n determinada. Y es que no ha sido ni una ni dos, las veces que me he encontrado con tres registros de assemblys en el mismo webConfig para distintas versiones del mismo assembly, produciendose como es l&amp;oacute;gico errores de compilaci&amp;oacute;n, lios de versiones, etc...&lt;/p&gt;
&lt;p&gt;Esto es facil de resolver y de abreviar usando bindingRedirect, y lo mejor para explicarlo es un caso practico:&lt;/p&gt;
&lt;p&gt;&amp;lt;dependentAssembly&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;assemblyIdentity name=&amp;quot;MyAssembly.Controls&amp;quot; publicKeyToken=&amp;quot;709072f976b4c05b&amp;quot;/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;bindingRedirect oldVersion=&amp;quot;1.0.0.0-1.1.0.0&amp;quot; newVersion=&amp;quot;2.0.0.0&amp;quot;/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/dependentAssembly&amp;gt;&lt;/p&gt;
&lt;p&gt;En este caso lo que indicamos es que que toda Referencia a MyAssembly.Controls versi&amp;oacute;n 1.0.0.0 y 1.1.0.0 apunten realmente a&amp;nbsp;la versi&amp;oacute;n 2.0.0.0 del ensamblado.&lt;/p&gt;
&lt;p&gt;R&amp;aacute;pido y veloz, cual&amp;nbsp;caballo desbocado&amp;nbsp;sin jinete :D&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=162219" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Desarrollo Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Desarrollo+Web/default.aspx" /></entry><entry><title>Fast Tricks: Obtener Grupos de Usuario AD DirectoryServices 3.5</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/11/27/fast-tricks-obtener-grupos-de-usuario-ad-directoryservices-3-5.aspx" /><id>/blogs/ifernandez/archive/2009/11/27/fast-tricks-obtener-grupos-de-usuario-ad-directoryservices-3-5.aspx</id><published>2009-11-27T09:20:00Z</published><updated>2009-11-27T09:20:00Z</updated><content type="html">&lt;p&gt;Siguiendo con esta serie de articulos sobre tips r&amp;aacute;pidos para solucionar de forma optima y r&amp;aacute;pida casos concretos,&amp;nbsp;os dejo un par de lineas r&amp;aacute;pidas para encontrar de forma &amp;oacute;ptima y recursiva todos los posibles grupos y subGrupos de un Usuario de Directorio Activo, con DirectoryServices 3.5.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; GetGruposUsuarioActiveDirectory(&lt;span style="color:blue;"&gt;string&lt;/span&gt; Usuario)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; roles = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; nombreDominio = &lt;span style="color:#a31515;"&gt;&amp;quot;MyDomain&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;PrincipalContext&lt;/span&gt; ctx = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;PrincipalContext&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;ContextType&lt;/span&gt;.Domain, nombreDominio))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;UserPrincipal&lt;/span&gt; userPrincipal = &lt;span style="color:#2b91af;"&gt;UserPrincipal&lt;/span&gt;.FindByIdentity(ctx, Usuario);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (userPrincipal != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Principal&lt;/span&gt; p &lt;span style="color:blue;"&gt;in&lt;/span&gt; userPrincipal.GetGroups())&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;roles.Add(p.Name);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} userPrincipal.Dispose();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; roles;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;Edit: La recursividad como comentaba en un comentario m&amp;aacute;s abajo, podemos obtenerla simplemente llamando a esta funci&amp;oacute;n de forma recursiva (valga la redundancia), o simplemente, en vez de utilizar el m&amp;eacute;todo GetGroups, se utilizar&amp;aacute; &amp;nbsp;GetAuthorizationGroups&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=161399" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Seguridad" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Seguridad/default.aspx" /></entry><entry><title>Fast Tricks: DataPager No Rows Visible</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/11/25/fast-tricks-datapager-no-rows-visible.aspx" /><id>/blogs/ifernandez/archive/2009/11/25/fast-tricks-datapager-no-rows-visible.aspx</id><published>2009-11-25T10:36:00Z</published><updated>2009-11-25T10:36:00Z</updated><content type="html">&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Hola amigos, tras las cientos de llamadas que hemos recibido en la centralita, aqu&amp;iacute; un nuevo art&amp;iacute;culo para desempolvar el blog, esta vez lo har&amp;eacute; abriendo una especie de secci&amp;oacute;n nueva, Fast Tricks, truquitos r&amp;aacute;pidos, y simples que nos valen para resolver problemitas concretos de forma optima y r&amp;aacute;pida.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;En este caso voy a comentaros un truquito con el control DataPager, ese control m&amp;aacute;gico&amp;nbsp;que nos sirve para paginar resultados en ListView&amp;#39;s, Grid&amp;#39;s, etc.. En ocasiones he visto como desde la capa de presentaci&amp;oacute;n se preguntaba una y otra vez por el n&amp;uacute;mero de resultados a paginar para mostrar o no dicho&amp;nbsp;control. Pues bien, hagamos que todo esto se centralice, que sea el propio control el que diga si tiene que visualizarse o no, dependiendo del n&amp;uacute;mero de resultados a mostrar, as&amp;iacute; no tendremos que preguntar una y otra vez en cada una de las p&amp;aacute;ginas donde lo usemos.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Para ello bastar&amp;aacute; con crearnos una clase que herede de &lt;/span&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;System.Web.UI.WebControls.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#2b91af;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;DataPager &lt;/span&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;y sobre escribamos su m&amp;eacute;todo Render. En esta sobre escritura comprobaremos a trav&amp;eacute;s de las propiedades TotalRowCount y PageSize, si el n&amp;uacute;mero de filas a mostrar es mayor al n&amp;uacute;mero de filas que se quiere se vean por p&amp;aacute;gina, y dependiendo del resultado, renderizaremos o no el control.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Un ejemplo de caso pr&amp;aacute;ctico: si deseo que me aparezcan 5 filas por p&amp;aacute;gina, y solo tenemos 4 registros de datos, no mostraremos el control.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyDataPager&lt;/span&gt; : System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;DataPager&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Render(&lt;span style="color:#2b91af;"&gt;HtmlTextWriter&lt;/span&gt; writer)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;base&lt;/span&gt;.TotalRowCount &amp;gt; &lt;span style="color:blue;"&gt;base&lt;/span&gt;.PageSize)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Render(writer);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0cm 0cm 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Eh voil&amp;aacute;, espero que este articulillo aunque b&amp;aacute;sico y simpl&amp;oacute;n, os sirva alguna vez &lt;/span&gt;&lt;span style="font-family:Wingdings;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:9pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=161234" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Desarrollo Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Desarrollo+Web/default.aspx" /><category term="Dise&amp;#241;o Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Dise_26002300_241_3B00_o+Web/default.aspx" /></entry><entry><title>FileUpload con UpdatePanel</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/02/02/fileupload-con-updatepanel.aspx" /><id>/blogs/ifernandez/archive/2009/02/02/fileupload-con-updatepanel.aspx</id><published>2009-02-02T16:42:00Z</published><updated>2009-02-02T16:42:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Hola amigos, hace unos d&amp;iacute;as me top&amp;eacute; por casualidad,&amp;nbsp;con uno de esos controles asp.net que son &lt;a href="http://msdn.microsoft.com/en-us/library/cc295545.aspx"&gt;&lt;span style="color:blue;mso-bidi-font-size:11.0pt;"&gt;incompatibles con el updatePanel&lt;/span&gt;&lt;/a&gt;, me refiero al&amp;nbsp;FileUpload. El problema era&amp;nbsp;que, quer&amp;iacute;a/necesitaba realizar una webpart para sharepoint, que permitiera mandar mails, con archivos adjuntos, y que corriera con ajax, para evitar postbacks innecesarios etc. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;En cuanto navegu&amp;eacute; un poco, encontr&amp;eacute; algunas soluciones como la creaci&amp;oacute;n de &lt;a href="http://msmvps.com/blogs/luisabreu/archive/2006/12/14/uploading-files-without-a-full-postback.aspx"&gt;&lt;span style="color:blue;mso-bidi-font-size:11.0pt;"&gt;iframes&lt;/span&gt;&lt;/a&gt; , creacion de triggers para forzar postbacks, etc... pero ninguno de ellos colmaba mis expectativas, as&amp;iacute; que me puse a pensar un poqui&amp;ntilde;o, y encontr&amp;eacute; una salida, que no s&amp;eacute; si ser&amp;aacute; la adecuada, la mejor, o simplemente una &amp;ntilde;apa, pero la verdad es que me solucion&amp;oacute; la vida, con unas cuantas lineas de c&amp;oacute;digo.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Simplemente tenemos que&amp;nbsp;sobreescribir el m&amp;eacute;todo render de la clase&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;System.Web.UI.WebControls.&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;FileUpload, &lt;/span&gt;&lt;span style="font-size:10pt;color:#333300;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;haciendo que cuando este se reenderice, se &amp;quot;incruste&amp;quot; una llamada a una funci&amp;oacute;n javaScript en el evento onchange del control:&lt;/span&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;public class&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;miFileUpload&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; : System.Web.UI.WebControls.&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;FileUpload&lt;/span&gt;&lt;span style="font-size:10pt;color:#333300;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:#333300;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;{&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;color:#333300;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; miFileUpload() {}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;protected&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;override&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;void&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; Render(System.Web.UI.&lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;HtmlTextWriter&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; writer)&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;{&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;writer.AddAttribute(&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;quot;onchange&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;, &lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;quot;funcionJs()&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;writer.AddAttribute(&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;, &lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;quot;miUpload&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;base.Render(writer);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;}&lt;/span&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:#333300;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;De esta manera, cuando seleccionemos un archivo, tendremos acceso a la funci&amp;oacute;n de javaScript funcionJs(), en la que podremos acceder al archivo que hemos seleccionado:&lt;/span&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;function &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;funcionJs() &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;alert(document.all.miUpload.value); &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-ansi-language:EN-US;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;}&lt;/span&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Y esto es todo, tal vez lo consider&amp;eacute;is una &amp;ntilde;apa, pero bueno, con solo unas cuantas l&amp;iacute;neas, ten&amp;eacute;is un fileUpload rulando dentro de un updatePanel.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;color:black;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;"&gt;Un saludete&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=141790" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Desarrollo Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Desarrollo+Web/default.aspx" /><category term="AJAX" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/AJAX/default.aspx" /></entry><entry><title>A la caza del XP rojo</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2009/01/08/a-la-caza-del-xp-rojo.aspx" /><id>/blogs/ifernandez/archive/2009/01/08/a-la-caza-del-xp-rojo.aspx</id><published>2009-01-08T09:29:00Z</published><updated>2009-01-08T09:29:00Z</updated><content type="html">&lt;p&gt;A veces la web me confunde....&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Cual es mi sorpresa al ver que tenemos una nueva versión de una de las mejores pelis de submarinos de la historia &amp;quot;La caza del octubre rojo&amp;quot;. En esta nueva entrega el intrigante sistema sovietico silencioso de propulsión magnetohidrodinámico que hacía del Octubre un submarino temible, es sustituido por un windows XP... que se preparen las aguas del planeta la Royal Navy se ha actualizado !!! &lt;/p&gt;&lt;p&gt;&amp;nbsp;Más info de la noticia (en serio) en el &lt;a href="http://www.elmundo.es/navegante/2008/12/18/tecnologia/1229607687.html" target="_blank"&gt;navegante&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=139110" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="windows xp" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/windows+xp/default.aspx" /><category term="Humor" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Humor/default.aspx" /></entry><entry><title>Reconocimiento facial. TrackEye</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2008/06/25/reconocimiento-facial-trackeye.aspx" /><id>/blogs/ifernandez/archive/2008/06/25/reconocimiento-facial-trackeye.aspx</id><published>2008-06-25T10:56:00Z</published><updated>2008-06-25T10:56:00Z</updated><content type="html">&lt;p&gt;Para todos aquellos a los que les interesa el tema del reconocimiento facial, se ha publicado en codeProject un interesantísimo articulo en el que se explica en detalle alguno de los algoritmos utilizados para detectar ciertos aspectos del rostro. En concreto el articulo se centra en un programa capaz de grabar el movimiento que realizan nuestros ojos a través de una webCam. Si quieres más información no dudes en visitarlo, &lt;a class="" href="http://www.codeproject.com/KB/cpp/TrackEye.aspx"&gt;Real-Time Tracking Of Human Eyes Using a Webcam&lt;/a&gt;&amp;nbsp;en él, encontrarás disponible tanto un ejecutable del programa, como el fuente del mismo.&lt;/p&gt;
&lt;p&gt;Saludotes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/cpp/TrackEye.aspx"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=89825" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author></entry><entry><title>Hacking Techniques (Bouncing Attacks)</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2008/06/18/hacking-techniques-bouncing-attacks.aspx" /><id>/blogs/ifernandez/archive/2008/06/18/hacking-techniques-bouncing-attacks.aspx</id><published>2008-06-18T07:01:00Z</published><updated>2008-06-18T07:01:00Z</updated><content type="html">&lt;p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Hace unas semanas,&amp;nbsp;por unos motivos u otros,&amp;nbsp;tuve&amp;nbsp;indagar&amp;nbsp;sobre un cierto agujero de seguridad que se producía al emplear una técnica&amp;nbsp;de pirateo simple a la par de efectiva empleada contra aplicaciones web, técnica a la que los &amp;quot;expertos&amp;quot; denominan (&lt;strong&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Bouncing Attack&lt;/span&gt;&lt;/strong&gt;).&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;La técnica es bastante simple, lo que se hace es colocar un servidor Proxy,&amp;nbsp;como por ejemplo &lt;a href="http://nginx.net/" target="_blank"&gt;&lt;font color="#800080"&gt;NGIX&lt;/font&gt;&lt;/a&gt;, entre el servidor en el que&amp;nbsp;aloja nuestra aplicación web, y el cliente que está ejecutando dicha aplicación. El procedimiento consiste en cazar la petición HTTP que se hace desde cliente en dicho servidor, y modificar nombres de variables, valores, etc... hasta que la aplicación alojada en el servidor pete al recibir dicha petición, pudiendo (si no se tiene controlado), mostrar información sensible del servidor.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;En el caso con el que me encontré,&amp;nbsp;se podía reventar la aplicación modificando&amp;nbsp;los values que se mandaban desde unos combos &lt;strong&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;no editables&lt;/span&gt;&lt;/strong&gt;, esos values llevaban id&amp;#39;s de tipo integer, y se enviaban a una capa de datos que esperaba ese tipo de dato, cuando&amp;nbsp;se empezó&amp;nbsp;a meter como values&amp;nbsp;valores no numéricos, la aplicación reventó a primeras de cambio.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Soluciones a este problema??, pues a gusto del consumidor, desde emplear un simple Try...Catch que capture el error, a usar el viewState de la página para que no pueda modificarse así&amp;nbsp;como así la petición HTTP, etc...&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Más info sobre&amp;nbsp;el &lt;a href="http://www.governmentsecurity.org/articles/HackingTechniquesIssue2-BouncingAttacks.php"&gt;&lt;font color="#800080"&gt;Bouncing Attack&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=89122" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Seguridad" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Seguridad/default.aspx" /></entry><entry><title>Folder Content Type. Propiedades de carpeta Sharepoint 2007</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2008/02/19/folder-content-type-propiedades-de-carpeta-sharepoint-2007.aspx" /><id>/blogs/ifernandez/archive/2008/02/19/folder-content-type-propiedades-de-carpeta-sharepoint-2007.aspx</id><published>2008-02-19T14:51:00Z</published><updated>2008-02-19T14:51:00Z</updated><content type="html">&lt;b&gt;&lt;font size="3"&gt;
&lt;p&gt;&lt;font size="2"&gt;Folder Content Type&lt;/font&gt;&lt;/p&gt;&lt;/b&gt;
&lt;p&gt;&lt;font size="2"&gt;Uno de los puntos de encuentro que he podido establecer, tras vivir varias experiencias con usuarios encargados de administrar bibliotecas de documentos, es que se suelen volver locos, al intentar agregar campos/columnas &amp;quot;extra&amp;quot;, a un determinado elemento de una biblioteca de documentos de Sharepoint 2007.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Para un elemento/documento normal, la solución suele ser muy simple y rápida, basta con agregar una columna nueva a la biblioteca de documentos en cuestión. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Pero qué ocurre cuando queremos agregar información adicional a una carpeta, cómo podemos asignarle esa información que tan útil nos puede ser a la hora de clasificar nuestros documentos.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font size="2"&gt;Pues una solución, es crear nuestro propio &lt;b&gt;tipo de contenido personalizado&lt;/b&gt;&lt;font face="Times New Roman"&gt;.&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;
&lt;p&gt;1º Creación del Content Type&lt;/p&gt;&lt;/b&gt;
&lt;p&gt;Lo primero es crear el Content Type, para ello nos irémos a la administración de nuestro sitio, y pulsaremos sobre el enlace de &lt;em&gt;Tipos de Contenido&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:281px;" height="281" src="http://geeks.ms/photos/ifernandez/images/72289/640x480.aspx" width="640" align="absMiddle" border="1" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El siguiente paso es la creación del mismo, en este ejemplo crearemos una carpeta tipo &lt;strong&gt;Alumno, &lt;/strong&gt;destacar que debemos establecer que el &lt;em&gt;&lt;u&gt;tipo de contenido primario será de tipo carpeta&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img style="WIDTH:640px;HEIGHT:318px;" height="318" src="http://geeks.ms/photos/ifernandez/images/72290/640x480.aspx" width="640" align="middle" border="1" alt="" /&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2º Creación de Columnas de Sitio&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Perfecto, ya tenemos creado el content type, a continuación deberemos introducir aquellos campos, columnas que queramos sean visibles en el mismo, por ejemplo, la fecha de nacimiento del alumno y si tiene alguna alergia destacable.&lt;/p&gt;
&lt;p&gt;Para ello, dentro de la configuración de nuestro Conten Type, pulsaremos sobre el enlace de creación de una columna de sitio (destacar que sharepoint2007 trae algunas columnas por defecto, las cuales podremos agregar pulsando el enlace inmediatamente superior al de la creación de las columna de sitio).&lt;/p&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:297px;" height="297" src="http://geeks.ms/photos/ifernandez/images/72291/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Una vez pulsado, nos aparecerá el formulario de creación de columna, el cual nos sonará si nos hemos tenido que pegar con los tipos de datos de las bibliotecas, vistas, etc. Bastará con establecer su formato y aceptar.&lt;/p&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;img style="WIDTH:500px;HEIGHT:375px;" height="375" src="http://geeks.ms/photos/ifernandez/images/72292/500x375.aspx" width="500" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;b&gt;
&lt;p&gt;3º Configuración de la biblioteca de documentos&lt;/p&gt;&lt;/b&gt;
&lt;p&gt;Perfecto, ya tenemos creado nuestro Contet Type con dos columnas, a continuación tenemos que configurar la biblioteca, para que podamos asignarle nuestros propios tipos. Para ello iremos a la configuración de nuestra biblioteca y pulsaremos sobre el enlace de &lt;em&gt;Configuración Avanzada&lt;/em&gt;.&lt;/p&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:415px;" height="415" src="http://geeks.ms/photos/ifernandez/images/72293/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Y dentro de esta, establecereos que &lt;b&gt;SI&lt;/b&gt; que deseamos permitir la administración de tipos de contenido.&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;img style="WIDTH:640px;HEIGHT:428px;" height="428" src="http://geeks.ms/photos/ifernandez/images/72294/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;
&lt;p&gt;Bien ahora que podemos administrar los tipos de contenido de nuestra biblioteca, nos aparecen los enlaces de administración de los mismos, pulsaremos sobre &lt;i&gt;Agregar a partir de tipos de contenido de sitio&lt;font face="Times New Roman"&gt;.&lt;/p&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:480px;" height="480" src="http://geeks.ms/photos/ifernandez/images/72295/640x480.aspx" width="640" border="1" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;Agregaremos el Tipo que habíamos creado (Carpeta de Alumno), y ya estamos listos para usar nuestras carpetas con propiedades. Como vemos en la siguiente imagen al irnos al menú nuevo, nos aparece nuestra &lt;strong&gt;Carpeta de Alumno&lt;/strong&gt;&lt;/p&gt;&lt;font face="Times New Roman"&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:219px;" height="219" src="http://geeks.ms/photos/ifernandez/images/72297/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Tras pulsar sobre nuestro nuevo tipo de carpeta, cual truco merliniano, nos aparecerá un formulario para introducir esas propiedades que tan ansiadamente buscábamos.&lt;/p&gt;&lt;font face="Arial"&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:219px;" height="219" src="http://geeks.ms/photos/ifernandez/images/72298/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Y&amp;nbsp;listo:&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:640px;HEIGHT:219px;" height="219" src="http://geeks.ms/photos/ifernandez/images/72299/640x480.aspx" width="640" border="1" alt="" /&gt;&lt;/p&gt;&lt;/font&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=72608" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Sharepoint" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Sharepoint/default.aspx" /></entry><entry><title>Sharepoint Visual Studio Tools to XP or VISTA ?</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/11/27/sharepoint-visual-studio-tools-to-xp-or-vista.aspx" /><id>/blogs/ifernandez/archive/2007/11/27/sharepoint-visual-studio-tools-to-xp-or-vista.aspx</id><published>2007-11-27T16:16:00Z</published><updated>2007-11-27T16:16:00Z</updated><content type="html">&lt;div&gt;&lt;font face="Arial" color="#000000" size="2"&gt;En ocasiones cuando hemos querido desarrollar con nuestro vs05 algun webpart o aplicación que interactuara contra wss3.0, y que requiriera de Microsoft.Sharepoint.dll teníamos normalmente, que tirar de máquinas virtuales en las que emular un windows Server 2003 con el wss3.0 instalado, el vs05, etc... Pues el frotar se va a acabar. &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" color="#000000" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" color="#000000" size="2"&gt;Basta con crearse una clave de registro, para engañar al instalador de las tools, para que este interprete que en nuestro S.O tiene instalado el wss3.0&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;strong&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0] &amp;quot;Sharepoint&amp;quot;=&amp;quot;Installed&amp;quot; &lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;Así podremos desarrollar cómodamente vs Sharepoint&amp;nbsp;desde nuestro Vista y/o&amp;nbsp; XP&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;Encontrado en: &lt;a class="" title="Blog de Janne Mattila" href="http://blogs.msdn.com/jannemattila/archive/2007/08/16/how-to-install-windows-sharepoint-services-3-0-tools-to-xp-or-vista.aspx" target="_blank"&gt;Blog de Janne Mattila&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=53070" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Sharepoint" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Sharepoint/default.aspx" /><category term="Visual Studio" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Reinicio de Pc al imprimir desde Reporting </title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/10/10/reinicio-de-pc-al-imprimir-desde-reporting.aspx" /><id>/blogs/ifernandez/archive/2007/10/10/reinicio-de-pc-al-imprimir-desde-reporting.aspx</id><published>2007-10-10T07:22:00Z</published><updated>2007-10-10T07:22:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Hola a todos, como casi siempre que escribo, lo hago tras haberme encontrado en alguna situación peliaguda, que considero podeis encontraros en alguna ocasión.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Se trata del fallo que se produce en el SO (windows 2000/XP), al intentar imprimir algún informe&amp;nbsp;bajo Reporting Services, el cual consiste en que el PC se reinicia solo, cuando desde el ActiveX de impresión de reporting &lt;a class="" href="http://geeks.ms/blogs/ifernandez/archive/2007/01/05/rsclientprint-impresi-n-controlada-de-informes-reporting-services.aspx" target="_blank"&gt;RsClienPrint&lt;/a&gt;, se comunica con determinadas&amp;nbsp;impresoras.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;En concreto el fallo suele producirse con aquellas impresoras que usan &lt;a class="" title="http://en.wikipedia.org/wiki/Printer_Control_Language" href="http://geeks.ms/controlpanel/blogs/PCL" target="_blank"&gt;PCL&lt;/a&gt; (lenguaje de comunicación desarrollado por HP, para establecer la comunicación cliente/impresora).&amp;nbsp;El problema se desata cuando&amp;nbsp;los&amp;nbsp;controladores de la impresora requieren ciertos parámetros del componente de sistema Win32k.sys (componente conocido por los famosos pantallazos azules que producía al chocar con distintos controladores).&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Para solucionarlo Microsoft ha sacado un &lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=69443B00-F831-4785-B292-DBF8CF002C6A&amp;amp;displaylang=en" target="_blank"&gt;HotFix&lt;/a&gt;, que podemos descargar e instalar gratuitamente.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;A continuación una lista de las impresoras conocidas que producen dicho error:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;
&lt;table class="list ul" class="list ul"&gt;

&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;Ricoh LAN Fax Driver&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;Gestetner P7026n PCL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;Ricoh Laser AP2600N PCL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;HP LaserJet 9050&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;HP LaserJet 4200&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;HP 4050 PCL6 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;HP LaserJet 4345 PCL 6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;Canon Pixma MP170&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=40788" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Reporting Services" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Reporting+Services/default.aspx" /><category term="HotFix" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/HotFix/default.aspx" /></entry><entry><title>RSS Webpart with Proxy Authentication</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/08/21/rss-webpart-with-proxy-authentication.aspx" /><id>/blogs/ifernandez/archive/2007/08/21/rss-webpart-with-proxy-authentication.aspx</id><published>2007-08-21T13:13:00Z</published><updated>2007-08-21T13:13:00Z</updated><content type="html">&lt;p&gt;Uno de los webparts más interesantes que nos trae Sharepoint 2007, es sin duda el visor de elementos RSS, el cual nos permite sindicarnos a feeds RSS remotos, e incluso editar la visualización de estos mediante una plantilla XSLT.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img style="WIDTH:360px;HEIGHT:375px;" height="375" src="http://geeks.ms/photos/ifernandez/images/28791/500x375.aspx" width="360" alt="" /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;Todo es muy bonito y maravilloso, tanto, que incluso aunque tu organización esté tras un proxy, te puede interesar salir del mismo, para poder obtener las sindicaciones. &lt;/p&gt;
&lt;p&gt;Digo esto, pq uno de los problemas que encontramos con este webpart que trae Sharepoint por defecto, es la imposibilidad de conectarse a direcciones RSS si estas tras un proxy. Obteniendo un error de conexión del estilo: &lt;font color="#ff0000"&gt;Error inesperado al procesar la solicitud. Compruebe los registros para ver los detalles y corregir el problema&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;Como la situación es un poco peliaguda, pero ya me había pegado con el proxy en alguna otra ocasión, sabía que no debería ser especialmente complicado encontrar una solución idonea, así que me dispuse a hacer mi propio webpart lector de RSS desde 0, el cual,&amp;nbsp;hará que mis peticiones&amp;nbsp;tengan implicitas las credenciales pertinentes para que el proxy sepa quien soy,&amp;nbsp;y&amp;nbsp;permita mi&amp;nbsp;conexión.&lt;/p&gt;
&lt;p&gt;Al tema&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1º Propiedades&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Una vez que tenemos creado un nuevo webPart desde nuestro visualStudio, lo primero será crear las distintas propiedades que necesitaremos para jugar con el proxy, así como con las fuestes&amp;nbsp;RSS que nos traeremos.&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;namespace rssWebpartProxy&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Guid(&amp;quot;25bbe10c-1853-45f1-81e3-7dc2c095148c&amp;quot;)]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class rssWebpartProxy : System.Web.UI.WebControls.WebParts.WebPart&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string pvtUriProxy = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string pvtUserProxy = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string pvtPwdProxy = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string pvtUriRSS = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6600ff" size="1"&gt;public rssWebpartProxy()&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ExportMode = WebPartExportMode.All;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebBrowsable(true), Personalizable(true), WebPartStorage(Storage.Personal),FriendlyName(&amp;quot;Proxy URI&amp;quot;), WebDescription(&amp;quot;Dirección remota del proxy&amp;quot;)]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string uriProxy&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return pvtUriProxy;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pvtUriProxy = value;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebBrowsable(true), Personalizable(true), WebPartStorage(Storage.Personal), FriendlyName(&amp;quot;User Proxy&amp;quot;), WebDescription(&amp;quot;Usuario autenticado en el proxy&amp;quot;)]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string userProxy&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return pvtUserProxy;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pvtUserProxy = value;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebBrowsable(true), Personalizable(true), WebPartStorage(Storage.Personal), FriendlyName(&amp;quot;Password Proxy&amp;quot;), WebDescription(&amp;quot;Password del Usuario autenticado en el proxy&amp;quot;)]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string pwdProxy&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return pvtPwdProxy;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pvtPwdProxy = value;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebBrowsable(true), Personalizable(true), WebPartStorage(Storage.Personal), FriendlyName(&amp;quot;URI RSS&amp;quot;), WebDescription(&amp;quot;Dirección remota del feed RSS&amp;quot;)]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string uriRSS&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return pvtUriRSS;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pvtUriRSS = value;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;En concreto, tendremos las siguientes propiedades:&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;uriProxy&lt;/b&gt;: En la que almacenaremos el URI de nuestro proxy&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;userProxy&lt;/b&gt;: En la que introduciremos el usuario que se validará en el proxy&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;pwdProxy&lt;/b&gt;: Password de conexión, del usuario que se autentificará (¿Cómo se dice autenticar o autentificar?, es una cuestión que me trae de cabeza xd)&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;uriRSS&lt;/b&gt;: En la que tendremos la dirección remota RSS a la que nos conectaremos&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2º Renderizado&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Bien, ya tenemos nuestras propiedades, las cuales daran el siguiente aspecto a la configuración de nuestro webPart:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img style="WIDTH:239px;HEIGHT:375px;" height="375" src="http://geeks.ms/photos/ifernandez/images/28790/500x375.aspx" width="239" alt="" /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Acontinuación, solo nos faltaría el &lt;em&gt;Render&lt;/em&gt; de los contenidos, donde meteremos toda la chicha:&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;protected override void Render(HtmlTextWriter writer)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(pvtUriRSS);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.Proxy = new System.Net.WebProxy(pvtUriProxy);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.Proxy.Credentials = new System.Net.NetworkCredential(pvtUserProxy, pvtPwdProxy);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.WebResponse resp = req.GetResponse();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.StreamReader textReader = new System.IO.StreamReader(resp.GetResponseStream(), System.Text.Encoding.GetEncoding(&amp;quot;Windows-1252&amp;quot;));&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(textReader);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.DataSet ds = new System.Data.DataSet();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ds.ReadXml(xmlReader);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = ds.Tables[&amp;quot;item&amp;quot;].Rows.Count - 1;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.DataRow dr;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String noticias = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (i &amp;gt;= 0)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dr = ds.Tables[&amp;quot;item&amp;quot;].Rows[ i ];&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; noticias += &amp;quot; &amp;lt;a href=&amp;quot; + dr[1] + &amp;quot; target=&amp;#39;_blank&amp;#39;&amp;gt;&amp;quot; + dr[0] + &amp;quot;&amp;lt;/a&amp;gt; - &amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i - 1;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Write(&amp;quot;&amp;lt;marquee scrollamount=4&amp;gt;&amp;quot; + noticias + &amp;quot;&amp;lt;/marquee&amp;gt;&amp;quot;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Write(&amp;quot;Conflicto en el Webpart de RSS Proxy:&amp;quot; + e.Message);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff" size="1"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Primero, haremos una petición &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest(VS.71).aspx"&gt;httpWebRequest &lt;/a&gt;&amp;nbsp;a la dirección Remota a la que queremos acceder, la cual está almacenada en la variable privada &lt;b&gt;pvtUriRSS&lt;/b&gt;, que tiene, como podríais observar en la definición de las propiedades, el contenido de la propiedad &lt;b&gt;uriRSS.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A continuación, a dicha petición &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest(VS.71).aspx"&gt;httpWebRequest &lt;/a&gt;&amp;nbsp;le especificaremos los parametros oportunos para las credenciales de su propiedad &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.proxy(VS.71).aspx" target="_blank"&gt;Proxy&lt;/a&gt;. Con esto, lo que haremos, es que nuestra petición vaya autenticada, de tal forma que el Proxy sabrá quien la esta realizando, y por tanto, saber&amp;nbsp;si debe o no permitir el acceso.&lt;/p&gt;
&lt;p&gt;El paso siguiente, sería hacer un objeto &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebresponse(VS.71).aspx" target="_blank"&gt;httpWebResponse&lt;/a&gt; a través del &lt;b&gt;HttpWebRequest.getResponse() &lt;/b&gt;(el cual a mi me gusta traducir como la&amp;nbsp;&lt;em&gt;exigencia&lt;/em&gt; de respuesta de una petición). &lt;/p&gt;
&lt;p&gt;En el objeto resultante (&lt;b&gt;resp&lt;/b&gt;), ya tendremos nuestra información, y el último paso será simplemente visualizarlo de la manera que creamos más conveniente.&lt;/p&gt;
&lt;p&gt;En el ejemplo, como podeis ver, yo utilizo un &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.streamreader.aspx" target="_blank"&gt;StreamReader&lt;/a&gt; para leer el chorro de datos, le especifico la codificación de &amp;quot;letra&amp;quot; que utilizo en el servidor donde voy a instalar el webpart, se lo paso a un &lt;a href="http://msdn2.microsoft.com/en-us/library/system.xml.xmlreader.aspx" target="_blank"&gt;xmlRealder&lt;/a&gt; (ya que la sindicación RSS, como sabemos viene en formato XML), lo cargo en un dataSet y a rular...&lt;/p&gt;
&lt;p&gt;En el paso final lo unico que hago a la hora de renderizar la información, es mostrar en modo de &amp;lt;marquesina&amp;gt;, arriesgándome con el uso de esta a no pasar algún test de accesibilidad, pero al ser un simple ejemplo, creo que queda chulo y facil de hacer, &amp;nbsp;otro gallo cantará cuando queramos usarlo en algún entorno de producción exigente, que nos obligue a cambiar la forma de visualizar el resultado rss, al cual podremos aplicar XSLT, (como por ejemplo vemos en un anterior articulo que realicé sobre como crear tu &lt;a href="http://geeks.ms/blogs/ifernandez/archive/2006/11/19/tu-lector-rss-en-5-minutos.aspx" target="_blank"&gt;lector rss en 5 minutos&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3º Instalación&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Gracias a la simplicidad de instalación de elementos web que nos aporta MOSS, podremos instalar la dll generada de forma sencilla.&lt;/p&gt;
&lt;p&gt;Para ello recordar:&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;Deberá ir firmada.&lt;/p&gt;
&lt;p&gt;- Tendremos que registrarla como elemento seguro en el web.config de nuestro portal:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="WIDTH:490px;HEIGHT:375px;" height="375" src="http://geeks.ms/photos/ifernandez/images/28795/500x375.aspx" width="490" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;-&amp;nbsp;Y por último agregarla desde la sección de Elementos Web dentro de la configuración de nuestro portal.&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:500px;HEIGHT:352px;" height="352" src="http://geeks.ms/photos/ifernandez/images/28793/500x375.aspx" width="500" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Dejo disponible un &lt;a href="http://geeks.ms/files/folders/ifernandez/entry28781.aspx" target="_blank"&gt;zip con el WebPart&lt;/a&gt;, para el que quiera usarlo directamente, sin complicarse mucho la vida :)&lt;/p&gt;
&lt;p&gt;Un saludo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=28817" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Sharepoint" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Sharepoint/default.aspx" /><category term="MOSS" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/MOSS/default.aspx" /><category term="WebParts" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/WebParts/default.aspx" /></entry><entry><title>Biblioteca de Documentos con enlaces</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/08/17/biblioteca-de-documentos-con-enlaces.aspx" /><id>/blogs/ifernandez/archive/2007/08/17/biblioteca-de-documentos-con-enlaces.aspx</id><published>2007-08-17T11:00:00Z</published><updated>2007-08-17T11:00:00Z</updated><content type="html">&lt;p&gt;Hola amigos, hoy toca un ummm, no se si llamarlo truquito,&amp;nbsp;recurso o directamente &lt;strong&gt;&lt;em&gt;ñapita cutre&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Vereis, hace poco, me ocurrió que en&amp;nbsp;un sistema sharepoint 2007 que administro, uno de los &amp;quot;colaboradores&amp;quot; me preguntó si sería posible insertar enlaces dentro de una biblioteca de documentos.&lt;/p&gt;
&lt;p&gt;Como bien sabemos, Sharepoint desde sus iniciales versiones, a la par que la bibloteca de documentos, nos adjunta un elemento web de bibloteca de enlaces, la cual es la que está encaminada a &lt;strong&gt;medio&lt;/strong&gt; resolver la problemática anterior. Pero digo &lt;strong&gt;medio&lt;/strong&gt;, pq lo que mi compi quiere, es no tener que meter un nuevo elemento web en el site; si no más bien mezclar enlaces con documentos...&lt;/p&gt;
&lt;p&gt;Bien, visto el caso, me puse a discurrir, (no mucho, que hoy tengo que estar descansado para una intensa sesion de pool), y me encontré con las siguiente solución:&lt;/p&gt;
&lt;p&gt;Ya que en una biblioteca de enlaces podemos subir archivos .html hagamos uno un tanto especial que nos permita redirigirnos al enlace en cuestión..... Esta ñapita resolvió el problema fácil y rápidamente, pero os comento unas cuantas situaciones, que me hicieron recordar mis tiempos de lucha con&amp;nbsp;el objeto window de javascript, y que igual pues os ahorran algo de tiempo cuando tengais algún caso similar:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1º Redirección automática&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Puessss qué tal si me creo un html con un script que que cambie el location, automáticamente ??? vamos a ello:&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;script languaje=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.location=&amp;quot;&lt;/font&gt;&lt;a href="http://geeks.ms/"&gt;&lt;font color="#6600ff"&gt;http://geeks.ms&lt;/font&gt;&lt;/a&gt;&lt;font color="#6600ff"&gt;&amp;quot;;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Una vez guardado el html, con subir el documento a la biblio, nos vale, pero nos encontramos con un problema, que pasaría si el usuario, una vez que ha visitado la nueva página, quiere volver hacia atrás ???, pues que la página de redireccionamiento, al volver al cargarse en el explorador, volverá a redireccionarse, por lo que puede que no nos valga... vamos a por una segunda opción.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2º PopUp&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bueno, pues hagamos que nuestra página lance otra nueva:&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;script languaje=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;function abreVentana()&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;window.open(&amp;quot;&lt;/font&gt;&lt;a href="http://geeks.ms/"&gt;&lt;font color="#6600ff"&gt;http://geeks.ms&lt;/font&gt;&lt;/a&gt;&lt;font color="#6600ff"&gt;&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body onload=&amp;quot;abreVentana()&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Pero que ocurre si el usuario&amp;nbsp; tiene un&amp;nbsp; bloqueador de elementos emergentes??, o si simplemente el administrador no quiere que se abra en ventana nueva... ya nos la estan liando de nuevo xdd, vamos a por la tercera...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3º iFrames power&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pues siguendo mi&amp;nbsp;misión de encontrar una solución simple y rápida se me ocurre, pq no meter en un iFrame la página que se quiere cargar??? podemos adaptarlo al ancho y alto de la página, y dará el pego no??? además, podremos utilizar el bótón volver con total libertad, aunque seamos conscientes de los problemas de accesibilidad que estos nos conllevan...&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;script languaje=&amp;quot;javascript&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;nbsp;function redirecciona(url)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;document.getElementById(&amp;quot;Matrix&amp;quot;).src= url;&lt;br /&gt;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body onload=&amp;quot;redirecciona(&amp;#39;http://DIRECCION DE DESTINO&amp;#39;)&amp;quot; topmargin=&amp;quot;0&amp;quot; rightmargin=&amp;quot;0&amp;quot; leftmargin=&amp;quot;0&amp;quot; bottommargin=&amp;quot;0&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;iframe id=&amp;quot;Matrix&amp;quot; src =&amp;quot;&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot; frameborder=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; &amp;gt;&amp;lt;/iframe&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#6600ff"&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;4º Ñapa?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ojo, esto es una solución rápida a un problema determinado, es más yo diría que es una ñapa que puede rozar el aberrantismo,&amp;nbsp;pero es la única solución que he encontrado para este problema en versiones anteriores a Sharepoint 2007&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5º GOD BLESS MOSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Dios bendiga a MOSS, se escribe así no??. Digo esto, pq decubrí, gracías a &lt;a class="" href="http://jdieguez.wordpress.com/"&gt;Jorge Dieguez&lt;/a&gt; ,&amp;nbsp;un excelente articulo de &lt;a class="" href="http://geeks.ms/members/dherraiz.aspx"&gt;David Herraiz&lt;/a&gt; sobre&amp;nbsp;&lt;a class="" href="http://geeks.ms/blogs/dherraiz/archive/2007/03/10/trabajando-con-listas-de-m-uacute-ltiples-tipos-de-contenido.aspx"&gt;listas&amp;nbsp;con múltiples tipos de contenido&lt;/a&gt;&amp;nbsp;en el que se explica perfectamente las posibilidades sobre la creación de Customs Lists, para permitir la introdución de diversos tipos de contenidos en una misma lista.&lt;/p&gt;
&lt;p&gt;Por último,&amp;nbsp;dar las gracias a todos aquellos que&amp;nbsp;me&amp;nbsp;han escrito&amp;nbsp;al mail&amp;nbsp;via blog, es de agradecer saber que hay gente que se interesa por tu trabajo de forma &amp;quot;desinteresada&amp;quot; xdd&lt;/p&gt;
&lt;p&gt;Kichess !!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=28070" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Sharepoint" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Sharepoint/default.aspx" /><category term="MOSS" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/MOSS/default.aspx" /></entry><entry><title>Cambio de css "ontheFly" with AJAX</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/06/11/cambio-de-css-quot-onthefly-quot-with-ajax.aspx" /><id>/blogs/ifernandez/archive/2007/06/11/cambio-de-css-quot-onthefly-quot-with-ajax.aspx</id><published>2007-06-11T13:45:00Z</published><updated>2007-06-11T13:45:00Z</updated><content type="html">Hace unos días me preguntaban si sería posible cambiar los estilos de una página "&lt;STRONG&gt;on The Fly&lt;/STRONG&gt;", al vuelo, durante la ejecución de la misma, cazando el postBack a través de Ajax, sin duda una posibilidad muy interesante de cara a la &lt;STRONG&gt;experiencia de usuario&lt;/STRONG&gt;, permitiendo que este "configure" o seleccione sus colores favoritos... sin sufrir los temidos refrescos de página &lt;BR&gt;Pues bien, pues la respuesta es que si, se puede hacer, y muy facilmente, símplemente basta con identificar a nuestro tag &amp;lt; link &amp;gt; (en el que establecemos la ruta de acceso a nuestras StyleSheets) dentro de nuestro DOM, modificando en la función que controle el callBack la propiedad href de este... Como veis no parece muy dificil, y para muestra un botón, aquí os dejo un ejemplillo: 
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;1º Utilizando la Dll de AJAX&lt;/STRONG&gt; &lt;BR&gt;El ejemplo lo hice desde un sitio web en blanco, sin las nuevas extensiones &lt;A href="http://ajax.asp.net/" target=_blank&gt;AJAX&lt;/A&gt;, preferí hacerlo desde 0.... aer que pasaba .... así que para empezar, nos tendríamos que bajar la &lt;A href="http://ajax.schwarz-interactive.de/download/ajax.zip" target=_blank&gt;dll de AJAX &lt;/A&gt;&lt;BR&gt;Una vez referenciada en nuestro proyecto, se la asignaremos a los métodos POST y GET de la página, añadiendo el siguiente httHandler al webconfig:&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;httpHandlers&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt; &lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;verb&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;POST,GET&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;AJAX/*.ashx&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Ajax.PageHandlerFactory, Ajax&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; /&amp;gt; &lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;httpHandlers&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;A continuación, indicaremos la clase que vamos a utilizar, en el load de nuestra página &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;protected&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Page_Load(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt; sender, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;EventArgs&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;{ &lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;Ajax.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Utility&lt;/FONT&gt;&lt;FONT size=2&gt;.RegisterTypeForAjax(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;typeof&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;NombreDeNuestraClase&lt;/FONT&gt;&lt;FONT size=2&gt;)); &lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Y por ultimo añadiremos el atributo [Ajax.AjaxMethod()] a todos los métodos a los cuales queremos controlar desde la llamada del cliente &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2º Al trapo&lt;/STRONG&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Bien, ya lo tenemos todo listo para empezar a jugar con AJAX, así que vamos a lo que nos interesa, cómo cambiar "on the fly" los estilos de mi página. Como os comentaba al principio del árticulillo, basta con ponerle un id a nuestro tag &amp;lt; link &amp;gt; de tal forma que en el head de la página nos encontraríamos con algo como: &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#990033&gt;&lt;FONT color=#6600ff&gt;&amp;lt;&lt;/FONT&gt;link &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;=&lt;FONT color=#6600ff&gt;"idLink"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;rel&lt;/FONT&gt;=&lt;FONT color=#6600ff&gt;"Stylesheet"&lt;/FONT&gt; &lt;FONT color=#ff3300&gt;href&lt;/FONT&gt;=&lt;FONT color=#6600ff&gt;"Styles/StyleSheet1.css"&lt;/FONT&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;type&lt;/FONT&gt;&lt;FONT color=#6600ff&gt;="text/css" / &amp;gt;&lt;/FONT&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;El paso siguiente es diseñar la funcionalidad de la página a través de la cual, cuando lancemos algun evento, modifiquemos el href de nuestro tag &amp;lt; link &amp;gt; Como ejemplo introduciremos un checkbox, el cual, cuando sufra un onClick llamará a la función javaScript que cazará el postback y realizará el cambio &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6600ff&gt;&amp;lt;&lt;FONT color=#990000&gt;input&lt;/FONT&gt;&lt;FONT color=#ff0000&gt; type&lt;/FONT&gt;="checkbox" &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;="miBox" &lt;FONT color=#ff0000&gt;onclick&lt;/FONT&gt;="NombreDeNuestraClase.NuestraFuncion(NuestraFuncion_CallBack)" &amp;gt;&amp;lt;&lt;FONT color=#990033&gt;div&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;class&lt;/FONT&gt;="NombreDeLaClaseCss"&amp;gt;&lt;FONT color=#000000&gt;Cambiar Estilo&lt;/FONT&gt;&amp;lt;/&lt;FONT color=#990000&gt;div&lt;/FONT&gt;&amp;gt;&lt;/FONT&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;A continuación diseñaremos la función javaScript, en la cual, como podemos observar, cambiamos la propiedad href de nuestro trag link, modificando así la ruta de la página de estilos a la que debe acceder: &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;FONT color=#993300&gt;script&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#993300&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#ff0000&gt;language&lt;/FONT&gt;="javascript"&lt;/FONT&gt; &lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#ff0000&gt;type&lt;/FONT&gt;="text/javascript"&amp;gt;&lt;/FONT&gt; &lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;function &lt;FONT color=#000000&gt;NuestraFuncion_CallBack(response)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt; &lt;BR&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;document.getElementById(&lt;FONT color=#990000&gt;"idLink"&lt;/FONT&gt;).href =response.value; &lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;} &lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;FONT color=#990000&gt;script&lt;/FONT&gt;&amp;gt;&lt;/FONT&gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Bueno, ya lo tenemos casi todo, ahora solo faltaría crear la función de servidor q devolverá la nueva ruta de la página de estilos: &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;[Ajax.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;AjaxMethod&lt;/FONT&gt;&lt;FONT size=2&gt;()]&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; NuestraFuncion()&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Styles/StyleSheet2.css"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/FONT&gt; &lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#009933 size=2&gt;//Devolvemos la nueva ruta&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt; &lt;BR&gt;Y boilá, ya hemos cambiado todos los estilos y colorines de nuestra página onTheFly, sin necesitar ningún postback de forma rápida y sencilla &lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=15875" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="AJAX" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/AJAX/default.aspx" /><category term="Dise&amp;#241;o Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Dise_26002300_241_3B00_o+Web/default.aspx" /><category term="CSS" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/CSS/default.aspx" /></entry><entry><title>Things NOT To Do When Building a Website ??</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/05/28/things-not-to-do-when-building-a-website.aspx" /><id>/blogs/ifernandez/archive/2007/05/28/things-not-to-do-when-building-a-website.aspx</id><published>2007-05-28T08:14:00Z</published><updated>2007-05-28T08:14:00Z</updated><content type="html">&lt;P&gt;Hace unos días un amigo me pasó un enlace &lt;A class="" href="http://www.microsiervos.com/archivo/internet/cosas-no-hace-construir-sitio-web.html" target=_blank&gt;vía microsiervos&lt;/A&gt; en el que se resumían unos 16 puntos q describen aquellas situaciones o errores que pueden cometerse a la hora de crear una aplicación web. La verdad, es que no estoy muy de acuerdo con ellos y como pienso que puede ser un buen tema de debate aquí dejo mi humilde opinión&amp;nbsp;sobre cada uno de los puntos.... &lt;/P&gt;
&lt;TABLE class=""&gt;

&lt;TR&gt;
&lt;TD class=""&gt;&lt;IMG src="http://www.concepthue.com/blog/wp-content/uploads/2006/12/Internet.jpg"&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;DIV&gt;&lt;STRONG&gt;1º Nunca cambies el tamaño de la ventana del navegador del usuario automáticamente, es molesto, irrespetuoso y típico de los sitios de spam. &lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;Si es o no molesto, creo que&amp;nbsp;depende de los gustos de cada uno,&amp;nbsp;a mi, personalmente, no me molesta, y mucho menos&amp;nbsp;siento&amp;nbsp;que me falten el respeto por ello... siempre y cuando, no se abuse de esto claro&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;2º Mal si tu página es de las que primero carga una página señuelo y ésta “lanza” un popup con la página real. Error muy habitual de los sitios hechos en Flash.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#339900&gt;Pues en esta ocasión estoy de acuerdo, siempre y cuando esa página señuelo no contenga algún tipo de información de la que dependa el lanzamiento de la web...&lt;/FONT&gt; &lt;/DIV&gt;
&lt;TR&gt;
&lt;TD class="" colSpan=2&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt; 
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;3º Tampoco está bien preguntar al usuario si quiere ver una caca de página directamente o prefiere entrar a un sitio guay lleno de colorines y animaciones pero para el cual necesita aditamentos especiales y esperar un rato a que cargue.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;Po no toy de acuerdo,&amp;nbsp;sobre todo si pensamos en que hay gente con conexiones lentas o si das portabilidad a otro tipo de dispositivos incapaces de leer adecuadamente una de las opciones....&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;4º Si todo tu sitio está hecho en Flash despide al desarrollador de la página y hazla otra vez; si la has hecho tú colócala en el apartado “sitios inútiles que he hecho” de tu portfolio y hazla otra vez.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#ff0000&gt;Pq está mal hacerla con flash, pq requiere un plugin&amp;nbsp;??? es un recurso más... utilizándolo adecuadamente siempre puedes darle algo más de valor a tu sitio&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#ff0000&gt;&lt;/FONT&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;STRONG&gt;5º No pretendas reinventar la navegación de los sitios web.&lt;/STRONG&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;De acuerdo, cíñete a una estructura&amp;nbsp;clara y concisa&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;6º El contenido es el rey: si tu página web no tiene suficiente contenido o ningún texto real que no esté en una imagen contrata a un copy y despide a tu webmaster ahora.&lt;/STRONG&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;Estoy de acuerdo en q el contenido es importante, pero tb lo es la imagen y la capacidad&amp;nbsp;de la misma para captar al usuario, sobre todo de cara&amp;nbsp;al &amp;nbsp;mercado...&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;STRONG&gt;7º Si tu sitio web no funciona o no se ve bien en Firefox... ¡bienvenido al 2007!&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Intentar usar standares para que sean aceptados por todos los navegadores...&amp;nbsp;como es lógico lo veo más que &amp;nbsp;aconsejable, aunque en ocasiones por razones de tiempo o de "comodidad" se les de un poco de lado...&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;8º Nada de texto parpadeando [&lt;FONT face=Courier size=3&gt;&amp;lt;blink&amp;gt;&lt;/FONT&gt;, los navegadores con clase como Safari ya ni la interpretan], nada de usar FrontPage, nada de popups ni en enlaces ni automáticos, nada de texto en scroll, nada de intros en Flash,...&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;Como comentaba anteriormente, hay que intentar seguir los standares, pero eso de ... nada de intros en flash??? bueno,&amp;nbsp;pq tu lo digas xd...&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;9º Si la página contiene música asegurate de que el usuario puede detenerla o apagarla y mejor si no se inicia automáticamente —lo mismo para el vídeo.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;De acuerdo, es de cajón...&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;10º Los menús de navegación mejor en texto que en imágenes.&lt;/STRONG&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff0000&gt;Si, y no, dependiendo del sitio, como ocurría en un punto anterior con las webs en flash, te interesará tener un menú de navegación más atractivo que otro...&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;11º Un flujo de navegación bien pensado con subsecciones siempre es mejor que utilizar menús desplegables. &lt;/STRONG&gt;&lt;BR&gt;&lt;FONT color=#009900&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Mi opinión es que cuanta más intuición pueda generar tu sitio a la hora de navegar, (y esto suele conseguirse con una buena estructura de áreas, secciones, etc......), mejor,&amp;nbsp;&amp;nbsp;lo que no quiere decir&amp;nbsp;que unos buenos menús desplegables puedan colaborar... &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;12º Si la única forma de encontrar la información importante de tu sitio web es utilizando el buscador, despide al tío que hizo el flujo de navegación —y que seguramente utilizó menús desplegables.&lt;/STRONG&gt; &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Desde luego,&amp;nbsp;si la única forma de encontrar contenidos es&amp;nbsp;el buscador, mal vamos...&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;13º Cuida el tiempo que necesita la página para cargarse. &lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Totalmente de acuerdo, siempre deberíamos intentar consumir lo mínima carga recursos posibles&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;14º Si pretendes hacer pasar al usuario por alguna ruta predeterminada para llevarle a alguna página concreta o a la versión demo de tu producto es hora de que te compres una granja de hormigas para aliviar tus deseos de usurpador de voluntades con alguna especie que lo permita.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;&lt;FONT color=#ff0000&gt;Desde&amp;nbsp;el punto de vista del marketing, diría que puede ser muy interesante intentar dirigir la navegación y la&amp;nbsp;atención del usuario a ciertos puntos o páginas,&lt;/FONT&gt; desde el punto de vista del programador, diría que prefiero soliviantar mis deseos de usurpador de voluntades echándome un buen Half Life con los amiguetes :D&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;STRONG&gt;15º Si vas a poner vídeo olvidate de pedirle a los usuarios que elija distintos anchos de banda y formatos de video perdedores como RealPlayer, Windows Media Player, Quicktime,... Utiliza un reproductor de vídeo en formato Flash como hacen YouTube y similares —si, Flash ganó esta única batalla hace tiempo.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Totalmente de acuerdo.... aunque esto choca con alguno de los puntos anteriores en los que se&amp;nbsp;se expone a flash como algo casi prohibitivo&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;16º No utilices técnicas y tecnologías nuevas en tu sitio web simplemente porque puedes o porque son novedosas. Las tecnologías nuevas son chulas, pero utilizalas sólo si realmente mejoran de algún modo la vida a tus lectores / clientes / usuarios.&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#009900&gt;Sin duda, usa todo aquello que conozcas siempre y cuando aporte valor a tu web, no lo uses por parecer el más machito del lugar&lt;/FONT&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=15309" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Desarrollo Web" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Desarrollo+Web/default.aspx" /></entry><entry><title>LinQ interview</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/05/24/linq-interview.aspx" /><id>/blogs/ifernandez/archive/2007/05/24/linq-interview.aspx</id><published>2007-05-24T13:26:00Z</published><updated>2007-05-24T13:26:00Z</updated><content type="html">&lt;P&gt;Hola hola amigos....&lt;/P&gt;
&lt;P&gt;Hace ya alguna semanas, (desde que presencié la conferencia de &lt;A class="" href="http://geeks.ms/members/ohernandez.aspx" target=_blank&gt;Octavio Hernandez&lt;/A&gt;&amp;nbsp;sobre LinQ en el DevDays), que me rondaban en la cabeza esas pinceladas que tan bien&amp;nbsp;mostró Octavio sobre&amp;nbsp;este "lenguaje", así que&amp;nbsp;hoy,&amp;nbsp;ya que por fin pude sacar algo de tiempo, decidí buscar algo más de información... y buscando, buscando, me topé con una entrevista bastante completa a &lt;A class="" href="http://research.microsoft.com/~emeijer/" target=_blank&gt;Erik Meijer&lt;/A&gt;&amp;nbsp;que creo que resume perfectamente a grandes rasgos el por qué, y el para qué de esta nueva "tecnología" que se va abriendo paso poco a poco.&lt;/P&gt;
&lt;P&gt;Podeis acceder a la entrevista completa desde &lt;A class="" href="http://www.infoq.com/interviews/erik-meijer-linq" target=_blank&gt;aquí&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=15197" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="LinQ" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/LinQ/default.aspx" /></entry><entry><title>Uso de Sharepoint 2007 Web Services</title><link rel="alternate" type="text/html" href="/blogs/ifernandez/archive/2007/03/22/uso-de-sharepoint-2007-web-services.aspx" /><id>/blogs/ifernandez/archive/2007/03/22/uso-de-sharepoint-2007-web-services.aspx</id><published>2007-03-22T16:30:00Z</published><updated>2007-03-22T16:30:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;En multitud de ocaciones a aquellos desarrolladores y administradores de Sharepoint se nos plantea una pregunta... cómo podríamos integrar una aplicación web en mi nuevo mega portal Sharepoint 2007...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Bueno, pues una posible y simple respuesta, es la de insertar en nuestro portal un webPart visor de páginas web, el cual apunte hacia&amp;nbsp;la dirección&amp;nbsp;en la que se aloja dicha aplicación.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Pero si somos un poco más rebuscados,&amp;nbsp;ahora nos podríamos preguntar... cómo podríamos hacer&amp;nbsp;que esa relación &lt;I style="mso-bidi-font-style:normal;"&gt;Portal-AppWeb&lt;/I&gt; fuera algo más que una simple ventana en la que se asoma la información de un sitio... cómo podríamos compartir información entre los dos sistemas.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Bien, pues aquí viene la cuestión del articulo.. podremos establecer una colaboración &lt;EM&gt;&lt;SPAN style="FONT-FAMILY:Arial;"&gt;PORTAL - appWeb&lt;/SPAN&gt;&lt;/EM&gt; más dependiente, a través de los web Services que nos aporta Sharepoint 2007, de los cuales podemos obtener más infomación &lt;A title=aquí href="http://msdn2.microsoft.com/en-us/library/ms479390.aspx" target=_blank&gt;aquí&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Para utilizar los Web Services de Sharepoint 2007 basta con acceder a &lt;A href="http://nuestrositio/_vti_bin/ServicioWeb.asmx"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:Arial;"&gt;http://NuestroSitio/_vti_bin/ServicioWeb.asmx&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:Arial;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;y para ver como funcionan, os pondré un simple ejemplillo en el que intentaremos que mi appWeb consiga la información registrada en el Portal del usuario que la está ejecutando, información tal, como si es o no Admin del site, login, nombre, email, etc.. bien manos a la masa:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;1º Creando mi Aplicación Web&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Una vez creada la aplicación web, lo primero que tendremos que hacer es añadir una referencia web hacia nuestro web service, como os comentaba anteriormente hacia &lt;B style="mso-bidi-font-weight:normal;"&gt;http://NuestroSItio/_vti_bin/ServicioWeb.asmx&lt;/B&gt;, en nuestro ejemplo, apuntaremos hacia &lt;B&gt;UserGroup.asmx&lt;/B&gt;, &lt;SPAN style="COLOR:black;"&gt;el cual nos dará acceso para trabajar con los usuarios, roles, grupos, etc...&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:black;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;IMG style="WIDTH:485px;HEIGHT:375px;" height=375 src="http://geeks.ms/photos/ifernandez/images/12125/485x375.aspx" width=485 align=absMiddle border=1&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:black;FONT-FAMILY:Arial;"&gt;2º A picarrr:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Bien, ya tenemos nuestra referencia web, pues ahora a picar toca:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:Arial;"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;//Primero instanciaremos nuestra referencia para poder trabajarla&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;refUserGroup.&lt;SPAN style="COLOR:teal;"&gt;UserGroup&lt;/SPAN&gt; spUser = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; refUserGroup.&lt;SPAN style="COLOR:teal;"&gt;UserGroup&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;//Destacar que la información que deseamos, vendrá en formato xml, por lo que será necesario declararnos objeto de tipo XmlNode&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.Xml.&lt;SPAN style="COLOR:teal;"&gt;XmlNode&lt;/SPAN&gt; userInfo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;//Otro aspecto imprescindible es el de pasarle las Credenciales al objeto que ha instanciado al webService, sin ellas, no nos permetiría el acceso a la información del portal&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;spUser.Credentials = System.Net.&lt;SPAN style="COLOR:teal;"&gt;CredentialCache&lt;/SPAN&gt;.DefaultCredentials;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;//A continuación, Le mandamos el chorro xml de información a nuestro objeto XmlNode utilizando el método &lt;STRONG&gt;GetUserInfo&lt;/STRONG&gt;, el cual te devuelve información del usuario que le pasamos como argumento, en nuestro caso, como comentábamos en el enunciado del ejemplo el Usuario, que está ejecutando la aplicación:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;userInfo = spUser.GetUserInfo(&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.Context.User.Identity.Name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;//Y ahora simplemente mostraremos esta información por pantalla en una label recorriendo los distintos atributos y valores de nuestro XmlNode:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;for&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt; (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; userInfo.ChildNodes.Item(0).Attributes.Count; i++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Label1.Text += &lt;SPAN style="COLOR:maroon;"&gt;"&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;"&lt;/SPAN&gt; + userInfo.ChildNodes.Item(0).Attributes.Item(i).Name + &lt;SPAN style="COLOR:maroon;"&gt;"&amp;lt;/b&amp;gt; : "&lt;/SPAN&gt; + userInfo.ChildNodes.Item(0).Attributes.Item(i).Value;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;mso-ansi-language:EN-GB;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;mso-no-proof:yes;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;3º Conclusión&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Bien pues como podremos apreciar tenemos la visualización de los datos registrados en el portal del usuario que está ejecutando esa aplicación web independiente.... &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;IMG style="WIDTH:485px;HEIGHT:375px;" height=375 src="http://geeks.ms/photos/ifernandez/images/12128/485x375.aspx" width=485 border=1&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&amp;nbsp;Ni que decir tiene, que este simple ejemplo nos sirve solo de base para saber como interactuar con estos Web Services, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;hemos visto q de manera&amp;nbsp;sencilla, podremos hacer que nuestras aplicaciones web&amp;nbsp;dependan del portal&amp;nbsp;en Sharepoint 2007 o viceversa&amp;nbsp;teniendo multitud de recursos a utilizar&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;4º Nota&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;Es importante recordar, que para que nuestra aplicación pueda obtener los atributos de conexión tales como el usuario autenticado, deberíamos en principio, deshabilitar el acceso anónimo del directorio en el que colgamos&amp;nbsp;la aplicación web.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:5pt 0cm;mso-pagination:none;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=12127" width="1" height="1"&gt;</content><author><name>ifernandez</name><uri>http://geeks.ms/members/ifernandez/default.aspx</uri></author><category term="Sharepoint" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Sharepoint/default.aspx" /><category term="Web Services" scheme="http://geeks.ms/blogs/ifernandez/archive/tags/Web+Services/default.aspx" /></entry></feed>