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

<channel>
	<title>weboomania.com &#187; ASP.NET</title>
	<atom:link href="http://www.weboomania.com/index.php/category/aspnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.weboomania.com</link>
	<description>donde las novedades tecnológicas son una manía</description>
	<lastBuildDate>Wed, 28 Dec 2011 16:53:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Solución al problema de los temas de ASP.NET basado en un Virtual Path Provider</title>
		<link>http://www.weboomania.com/2011/02/14/solucion-al-problema-de-los-temas-de-asp-net-basado-en-un-virtual-path-provider/</link>
		<comments>http://www.weboomania.com/2011/02/14/solucion-al-problema-de-los-temas-de-asp-net-basado-en-un-virtual-path-provider/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 22:42:56 +0000</pubDate>
		<dc:creator>Lester Sánchez</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/2011/02/14/solucin-al-problema-de-los-temas-de-asp-net-basado-en-un-virtual-path-provider/</guid>
		<description><![CDATA[Todo aquel que haya trabajado anteriormente con los temas de ASP.NET habrá disfrutado de la comodidad de definir y cambiar de una tema a otro, ya sea cambiado la configuración en el web.config o programáticamente. Sin embargo también habrá sufrido las limitaciones de los temas cuando se requiere cierta personalización, por ejemplo solo incluir algunos estilos en una página y no todos los que se encuentran en la carpeta del tema correspondiente o controlar el orden en que se insertan los CSS. Por otra parte no existe manera de controlar el atributo media o insertar estilos condicionales según la versión del navegador, tan útiles hasta tanto no sean estándares todos los navegadores, si es que algún día llega a ocurrir Egil Hansen brinda una solución alternativa (en inglés) How to take control of style sheets in ASP.NET Themes with the StylePlaceholder and Style control. Por su parte, la solución propuesta en este artículo es transparente y no requiere la modificación del código en las páginas que incluyen los estilos. Para ello definiremos un Virtual Path Provider ThemesVirtualPathProvider que se encargará de servir los ficheros del tema correspondiente. En las páginas la inclusión de los ficheros de estilos .css harán referencia [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2011/02/14/solucion-al-problema-de-los-temas-de-asp-net-basado-en-un-virtual-path-provider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML B&#225;sico vs Aplicaci&#243;n AJAX &#191;Son buenos los extremos?</title>
		<link>http://www.weboomania.com/2010/12/07/html-bsico-vs-aplicacin-ajax-son-buenos-los-extremos/</link>
		<comments>http://www.weboomania.com/2010/12/07/html-bsico-vs-aplicacin-ajax-son-buenos-los-extremos/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 05:49:06 +0000</pubDate>
		<dc:creator>Alejandro Tamayo</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RESTFul]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/index.php/2010/12/07/html-bsico-vs-aplicacin-ajax-son-buenos-los-extremos/</guid>
		<description><![CDATA[La evolución de la Web puede ser a veces comparada con la Moda en donde existen momentos “Retros” en que se vuelve a los inicios y se retoman los principios básicos. Inicialmente un sitio web era un conjunto de páginas html estáticas enlazadas mediante vínculos (hipervínculos). Luego se comenzaron a procesar estas páginas desde el servidor utilizando algún lenguaje como por ejemplo PHP, ASP.NET, etc, devolviendo así un contenido más dinámico y extendido, producido por solo un conjunto pequeño de estas páginas “inteligentes”. Pero todo no quedó ahí. Comenzó a surgir el concepto de Aplicación Web llevando lo que era una página que representaba a un documento hacia una mímica de interfaz de usuario para dar la sensación de “aplicación de escritorio” llegando al clímax con la tecnología AJAX, sus Widgets JavaScript y finalmente reventando con las RIAs donde se encuentran Flash/Flex, Silverlight y actualmente luchando por el trono, el embrión HTML5 que, según los pronósticos, llegará para quedarse. Recientemente tuve que desarrollar una aplicación web que por simplificar digamos que consistía en mostrar una tabla de datos (un listado de frutas por ejemplo) en la cual al hacer clic sobre un elemento de la tabla se visualizaran los detalles [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2010/12/07/html-bsico-vs-aplicacin-ajax-son-buenos-los-extremos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando el GroupedItemPicker de SharePoint</title>
		<link>http://www.weboomania.com/2009/12/14/usando-el-groupeditempicker-de-sharepoint/</link>
		<comments>http://www.weboomania.com/2009/12/14/usando-el-groupeditempicker-de-sharepoint/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 21:41:25 +0000</pubDate>
		<dc:creator>Raimil Cruz</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[GroupedItemControl]]></category>
		<category><![CDATA[Render Method]]></category>
		<category><![CDATA[WebParts]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/?p=113</guid>
		<description><![CDATA[En el SDK de SharePoint existe un control llamado GroupedItemPicker. Este control se usa en las páginas AddFieldFromTemplate.aspx y AddContentTypeToList.aspx. Ayer tuve que crear un WebPart y necesite usar la funcionalidad que brinda este control. Me fue casi imposible configurarlo pues no existe mucha documentación sobre el tema por tanto me  ayudé del código de la  propia página AddFieldFromTemplate.aspx para ver como estaba configurado e hice exactamente lo mismo. &#60;SharePoint:GroupedItemPicker id="Picker" runat="server" GroupControlId="SelectGroup" CandidateControlId="SelectCandidate" ResultControlId="SelectResult" AddButtonId="AddButton" RemoveButtonId="RemoveButton" DescriptionControlId="DescriptionControl" /&#62;       Como resultado recibí varias excepciones, de las cuales obtuve algunas  experiencias. Lo primero que descubrí es que las propiedades del control (GroupControlId, CandidateControlId, ResultControlId, AddButtonId, RemoveButtonId, DescriptionControlId) tienen que referenciar a los controles indicados. GroupControlId, CandidateControlId y CandidateControlId tiene que ser IDs de controles de tipo SPHtmlSelect. AddButtonId y RemoveButtonId tienen que ser de tipo HtmlButton , la propiedad DescriptionControlId tiene que ser de tipo HtmlGenericControl (en código markup equivalente a un span) y además el control &#8220;DescriptionControl&#8221; no puede tener su InnerHtml vacío. Una vez que estaban establecidas las propiedades pensé que mis problemas habían terminado, hasta que una nueva excepción me hizo cambiar de opinión (NullReferenceExpection en el método PreRender de GroupedItemPicker ). Esta detonó mi [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2009/12/14/usando-el-groupeditempicker-de-sharepoint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dynamic JSON Parser</title>
		<link>http://www.weboomania.com/2009/04/10/dynamic-json-parser/</link>
		<comments>http://www.weboomania.com/2009/04/10/dynamic-json-parser/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 19:18:26 +0000</pubDate>
		<dc:creator>Alejandro Tamayo</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ANTLR]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Compilación]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/?p=38</guid>
		<description><![CDATA[Estuve buscando en Internet algún framework que dado un Stream o un String con formato JSON, me devolviera una jerarquía de objetos en .NET que mapeara la estructura JSON descrita en el String de forma tal que fuese sencillo su utilización. Encontré algunas librerías: JavaScriptSerializer in System.Web.Extensions DataContractJsonSerializer in System.Runtime.Serialization.Web AjaxPro Sin embargo, ninguna de las librerías anteriores me sirvió debido a que necesito interpretar un JSON arbitrario, del cual no conozco su estructura. Es aquí donde aparece el problema. El CLR está orientado a lenguajes estáticamente tipados, por lo que resulta imposible (a menos sin utilizar Reflection) la creación de una jerarquía de tipos que mapee el string JSON. Mas adelante encontré el siguiente artículo: C# 4.0, Dynamic Programming and JSON http://www.nikhilk.net/CSharp-Dynamic-Programming-JSON.aspx !Viva C# 4.0! Exactamente eso es lo que estaba buscando. Lamentablemente, no puedo esperar a la salida de la plataforma .NET 4.0, así que tengo que buscar una solución con las herramientas actuales que están en producción. Volviendo a la búsqueda apareció la siguiente librería: JsonFx.Net http://jsonfx.net/download/ Esa librería (bajo licencia MIT, Software Libre) me resolvió el problema. El mapeo que realiza es el siguiente: JSON .NET object {..} Dictionary&#60;String,T&#62; array [..] T[] value value type (int, [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2009/04/10/dynamic-json-parser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WCF, REST &amp; Manejo de Caracteres Especiales</title>
		<link>http://www.weboomania.com/2009/04/02/wcf-rest-manejo-de-caracteres-especiales/</link>
		<comments>http://www.weboomania.com/2009/04/02/wcf-rest-manejo-de-caracteres-especiales/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 13:39:01 +0000</pubDate>
		<dc:creator>Alejandro Tamayo</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RESTFul]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/?p=31</guid>
		<description><![CDATA[Supongamos que tenemos implementado el patrón REST utilizando WCF (Windows Communication Foundation) y queremos asociar un recurso determinado a algún usuario de la siguiente forma: [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetResource/{user}")] Stream GetResource (string user); Para consumir el recurso del usuario “User1” utilizamos la siguiente URL: http://server/servicio.svc/GetResource/User1 Pero en una red con varios dominios deberíamos identificar al usuario como “DOMAIN\User1”. Sorprendentemente cuando utilizamos esa nomenclatura, el servidor retorna: 400 – Bad Request Si utilizamos User@domain todo vuelve a funcionar como se esperaba. Por tanto, ¿Cuál es el misterio del \ (Backslash)? Luego de navegar unas cuantas horas por internet, descubrí que ASP.NET bloquea el uso de “caracteres especiales” en la URL por razones de seguridad: Microsoft KB Article 826437 http://support.microsoft.com/kb/826437/en-us) Después de modificar el registro utilizando el código siguiente pude utilizar el Backslash: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET] &#8220;VerificationCompatibility&#8221;=dword:00000001 Sin embargo, todo no terminó aquí. Se me ocurrió luego utilizar la siguiente sintaxis: http://server/servicio.svc/GetResource/&#60;User1&#62; Quizás para este caso en particular no tenga sentido la utilización de &#60;&#62; pero supongamos que por alguna razón necesitamos la utilización de esa sintaxis. Como deberán estarse imaginando el “400 Bad Request” volvió a hacer de las suyas. [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2009/04/02/wcf-rest-manejo-de-caracteres-especiales/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Autorizando manejadores &#8220;virtuales&#8221;</title>
		<link>http://www.weboomania.com/2009/03/26/autorizando-manejadores-virtuales/</link>
		<comments>http://www.weboomania.com/2009/03/26/autorizando-manejadores-virtuales/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 00:47:26 +0000</pubDate>
		<dc:creator>Lester Sánchez</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.weboomania.com/2009/03/26/autorizando-manejadores-quotvirtualesquot/</guid>
		<description><![CDATA[Recientemente me di a la tarea de implementar un manejador HTTP (HttpHandler) para una aplicación ASP.NET. Para no agobiarlos con los detalles de la implementación de ese handler solo les diré que su función principal era la ejecución de un proceso en el servidor Web. Obviamente no quería que cualquiera pudiera llegar y pedir la URL del manejador, con lo cual se ejecutaría el proceso antes mencionado. En mi escenario la aplicación Web tenía habilitada la autenticación por formulario por lo cual pensé en usar el mismo mecanismo para restringir el acceso al manejador y aprovechar las bondades y la simpleza de la autorización basada en la URL que proporciona ASP.NET. Para ilustrar un poco las cosas, mi manejador sería algo así (no tan inocuo, claro : class RunCmdHandler:System.Web.IHttpHandler { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { context.Response.Write("Hello People... I'm here."); } } Y el código a colocar en el fichero de configuración web.config, para registrar el manejador y definir los permisos, el siguiente: &#60;configuration&#62; &#60;system.web&#62; &#60;authentication mode="Forms" /&#62; &#60;httpHandlers&#62; &#60;add verb="*" path="RunCmd.axd" type="RunCmdHandler"/&#62; &#60;/httpHandlers&#62; &#60;/system.web&#62; &#60;location path="RunCmd.axd"&#62; &#60;system.web&#62; &#60;authorization&#62; &#60;allow roles="Administrators" /&#62; &#60;deny users="*" /&#62; &#60;/authorization&#62; &#60;/system.web&#62; &#60;/location&#62; &#60;/configuration&#62; El código [...]]]></description>
		<wfw:commentRss>http://www.weboomania.com/2009/03/26/autorizando-manejadores-virtuales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

