<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Business Geek &#187; ASP.NET</title>
	<atom:link href="http://blog.djeepy1.net/category/asp-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.djeepy1.net</link>
	<description>Journal d&#039;un consultant, expert en technologies Microsoft</description>
	<lastBuildDate>Sun, 05 Feb 2012 11:23:08 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.djeepy1.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0dd4b3f2cbf56dd6a85a6e4f1dbbabb9?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Business Geek &#187; ASP.NET</title>
		<link>http://blog.djeepy1.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.djeepy1.net/osd.xml" title="Business Geek" />
	<atom:link rel='hub' href='http://blog.djeepy1.net/?pushpress=hub'/>
		<item>
		<title>IIS Media Pack 1.0</title>
		<link>http://blog.djeepy1.net/2008/11/22/iis-media-pack-1-0/</link>
		<comments>http://blog.djeepy1.net/2008/11/22/iis-media-pack-1-0/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 10:17:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2008/11/22/iis-media-pack-1-0/</guid>
		<description><![CDATA[Il y a 2 semaines est sorti un pack d&#8217;extension au serveur Web IIS 7.0. Comme son nom l&#8217;indique, ce pack ajoute&#160;2 fonctionnalités médias : Bit Throttling (contrôle de flux)&#160;: cela permet de contrôler le débit de différents types de médias&#160;(WMV, MP3, etc.)&#160;en fonction du client, du paramétrage, etc. Ayant eu, dans une vie antérieure, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=70&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img title="speedlimit-small.png, nov 2008" style="float:right;margin:0 0 1em 1em;" height="188" alt="" src="http://media.djeepy1.net/public/iis/speedlimit-small.png" width="150" />Il y a 2 semaines est sorti un pack d&#8217;extension au serveur Web <strong>IIS 7.0</strong>. Comme son nom l&#8217;indique, ce pack ajoute&nbsp;2 fonctionnalités médias :</p>
<ul>
<li><strong>Bit Throttling (contrôle de flux)</strong>&nbsp;: cela permet de contrôler le débit de différents types de médias&nbsp;(WMV, MP3, etc.)&nbsp;en fonction du client, du paramétrage, etc. Ayant eu, dans une vie antérieure, à développer des sites web manipulant de nombreux médias (vidéos, mp3), je peux vous dire que cette fonctionnalité est très intéressante. Elle permet de gérer son contenu plus sereinement, je parle surtout en terme de bande passante, sans avoir à recourir&nbsp;à un serveur spécialisé (streaming, Windows Media Services, etc.) ou à un CDN (Content Delivery Network comme akamai).</li>
<li><strong>Web playlists </strong>: création de playlists éventuellement dynamiques avec pour principal but de ne pas exposer en direct vos médias</li>
</ul>
<p>De nouvelles extensions sont prévues pour 2009, notamment concernant la gestion des vidéos HD avec <strong>Smooth Streaming</strong> (je vous renvoie d&#8217;ailleurs sur le blog d&#8217;un collègue qui en parle : <a href="http://patricelamarche.net/2008/11/18/SilverlightVideosEnHDViaSilverlightEtIIS7.aspx">SmoothHD chez Patrice Lamarche</a>) </p>
<p>Plus d&#8217;infos sur le site de IIS : <a href="http://www.iis.net/media">http://www.iis.net/media</a></p>
<br />Publié dans ASP.NET  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=70&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2008/11/22/iis-media-pack-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/iis/speedlimit-small.png" medium="image">
			<media:title type="html">speedlimit-small.png, nov 2008</media:title>
		</media:content>
	</item>
		<item>
		<title>Logs IIS &#8211; champ time-taken</title>
		<link>http://blog.djeepy1.net/2008/10/23/logs-iis-champ-time-taken/</link>
		<comments>http://blog.djeepy1.net/2008/10/23/logs-iis-champ-time-taken/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 04:10:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2008/10/23/logs-iis-champ-time-taken/</guid>
		<description><![CDATA[Le champ étendu des logs IIS time-taken est bien pratique pour avoir une bonne vision des performances d&#8217;un site web ou de services. Il reflète le temps, en millisecondes, qu&#8217;a pris la requête. Mais attention, qu&#8217;inclut-il ? Le champ time-taken correspond au temps entre le premier octet reçu et le dernier octet envoyé par HTTP.sys [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=83&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img title="logs-time-taken.png, oct 2008" style="float:right;margin:0 0 1em 1em;" alt="" src="http://media.djeepy1.net/public/iis/logs-time-taken.png" /></p>
<p>Le champ étendu des logs IIS <strong>time-taken</strong> est bien pratique pour avoir une bonne vision des performances d&#8217;un site web ou de services. Il reflète le temps, en millisecondes, qu&#8217;a pris la requête. Mais attention, qu&#8217;inclut-il ?</p>
<p>Le champ time-taken correspond au temps <strong>entre le premier octet reçu et le dernier octet envoyé</strong> par HTTP.sys (la sous-couche HTTP de IIS). <ins>Il inclut donc le temps de transfert réseau</ins>. </p>
<p>En conséquence, si vous avez des pages lourdes (ou des ViewState énormes), le résultat peut être faussé et votre analyse moins précise. Pensez donc à jetez un oeil au champ <strong>sc-bytes</strong> et <strong>cs-bytes</strong> (sc=server-to-client / cs=client-to-server) pour vérifier que le poids des transferts n&#8217;est pas anormal. Evidemment, sur un intranet local, l&#8217;impact sera souvent négligeable.</p>
<p>&nbsp;</p>
<p>Tous les détails sur ce lien : <a href="http://support.microsoft.com/kb/944884/en-us">http://support.microsoft.com/kb/944884/en-us</a></p>
<p><em>PS : ces informations conviennent à IIS 6.0 et IIS 7.0</em></p>
<br />Publié dans ASP.NET  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=83&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2008/10/23/logs-iis-champ-time-taken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/iis/logs-time-taken.png" medium="image">
			<media:title type="html">logs-time-taken.png, oct 2008</media:title>
		</media:content>
	</item>
		<item>
		<title>Identité d&#8217;un pool d&#8217;application IIS &#8211; Droits minimums</title>
		<link>http://blog.djeepy1.net/2008/10/12/identite-dun-pool-dapplication-iis-droits-minimums/</link>
		<comments>http://blog.djeepy1.net/2008/10/12/identite-dun-pool-dapplication-iis-droits-minimums/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 09:27:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2008/10/12/identite-dun-pool-dapplication-iis-droits-minimums/</guid>
		<description><![CDATA[Par défaut, dans IIS 6.0, un Worker Process (le processus représentant un pool d&#8217;applications au runtime), tourne avec le compte Network Service (Service Réseau). C&#8217;est largement suffisant dans la majorité des cas mais il arrive que l&#8217;on souhaite utiliser un compte particulier, pour faire de la sécurité intégrée avec SQL Server, pour accéder à un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=89&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Par défaut, dans IIS 6.0, un Worker Process (le processus représentant un pool d&#8217;applications au runtime), tourne avec le compte Network Service (Service Réseau). C&#8217;est largement suffisant dans la majorité des cas mais il arrive que l&#8217;on souhaite utiliser un compte particulier, pour faire de la sécurité intégrée avec SQL Server, pour accéder à un répertoire sensible, etc.</p>
<p>Dans ce cas, on modifie les paramètres du Pool, section Identity (Identité), pour préciser un compte d&#8217;exécution. Bien sûr, vous vous doutez bien qu&#8217;il va falloir des droits à ce compte pour accéder au minimum requis ASP.NET (fichiers du sites, GAC, répertoire de compilation temporaire, etc.).</p>
<p>Vous trouverez la liste à ce lien :&nbsp; <a href="http://msdn.microsoft.com/en-us/library/kwzs111e.aspx">http://msdn.microsoft.com/en-us/library/kwzs111e.aspx</a></p>
<p>Normalement, vous n&#8217;avez pas à configurer tout cela, il suffit juste d&#8217;ajouter le compte utilisé dans le groupe IIS_WPG, local à la machine. Mais il est possible que cela ne fonctionne pas, surtout si vous avez copié le site d&#8217;une machine à une autre (problème de SID). </p>
<p><ins>Attention</ins> : tout ceci ne fonctionne que pour IIS 6.0, pour IIS 7.0, c&#8217;est un petit peu différent.</p>
<p>&nbsp;</p>
<br />Publié dans ASP.NET  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=89&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2008/10/12/identite-dun-pool-dapplication-iis-droits-minimums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax: UpdatePanel Injection</title>
		<link>http://blog.djeepy1.net/2008/01/16/ajax-updatepanel-injection/</link>
		<comments>http://blog.djeepy1.net/2008/01/16/ajax-updatepanel-injection/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 11:16:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2008/01/16/ajax-updatepanel-injection/</guid>
		<description><![CDATA[Je vais vous présenter une technique utile pour optimiser la gestion des UpdatePanel dans ASP.NET Ajax : l&#8217;injection d&#8217;UpdatePanel.[Le code source est disponible en fin d'article] La problématique : Dans une page se trouve une liste d&#8217;éléments présentés dans un contrôle. Prenons un contrôle template comme le Repeater par exemple (bien que je préfère créer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=148&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Je vais vous présenter une technique utile pour optimiser la gestion des <strong>UpdatePanel</strong> dans <strong>ASP.NET Ajax</strong> : l&#8217;<strong>injection d&#8217;UpdatePanel</strong>.<br /><em>[Le code source est disponible en fin d'article]</em></p>
<h5>La problématique :</h5>
<p>Dans une page se trouve une liste d&#8217;éléments présentés dans un contrôle. Prenons un contrôle template comme le Repeater par exemple (bien que je préfère créer ma propre liste templatée). Une action sur un élément doit changer son état et l&#8217;affichage doit refléter ce changement en conséquence. L&#8217;image ci-dessous montre l&#8217;exemple utilisé.</p>
<p><a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/app-updatepanelinjection.png"><img height="380" alt="" src="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.app-updatepanelinjection_m.jpg" width="448" border="0" /></a></p>
<p>Avec un PostBack classique, on doit reconstruire tout l&#8217;arbre de contrôle pour pouvoir rendre la liste modifiée. Une optimisation (même si on ne gagne que de la bande passante) consisterait à placer le template de l&#8217;élément dans un UpdatePanel mais on ne gagne pas le temps de Render car la page reconstruit quand même l&#8217;arbre de contrôle (CreateChildControl) comme présenté dans la trace ASP.NET suivante.</p>
<p><a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/controltree-injectionupdatepanel.png"><img height="352" alt="arbre de controle du repeater" src="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.controltree-injectionupdatepanel_m.jpg" width="448" border="0" /></a></p>
<p>En plus, à moins que vous ne l&#8217;ayez prévu dans votre code, il y aura un nouvel appel à la base de données pour recharger la liste.</p>
<h5>L&#8217;objectif :</h5>
<p>Ne pas reconstruire l&#8217;ensemble de l&#8217;arbre (le Repeater) mais construire juste le template de l&#8217;élément modifié. On envoie le HTML généré au client via AJAX pour mettre à jour le DOM.</p>
<h5>La solution : </h5>
<p>On va utiliser un faux UpdatePanel qui représente la partie à modifier et qui sera plus haut dans la hiérarchie de contrôles (à la racine par exemple). On intercepte l&#8217;événement dans la page, on effectue la modification visuelle (après avoir fait son traitement métier bien évidemment) dans ce faux UpdatePanel et on va le réinjecter côté client à la place du vrai UpdatePanel à modifier. Bien entendu, on ne recharge pas la liste d&#8217;éléments.</p>
<h5>Comment faire ?&nbsp;:</h5>
<p>Premièrement, il faut placer la partie à mettre à jour selon cette technique dans un UserControl (ASCX) pour factoriser; je rappelle qu&#8217;il y a les instances dans le Repeater et la fausse instance à la racine. Dans notre cas c&#8217;est le bloc jaune (l&#8217;élément)&nbsp;que j&#8217;exporte. Cet export nous oblige à réifier l&#8217;affichage d&#8217;un élément en lui créant par exemple des propriétés publiques correspondant aux infos à afficher. On peut aussi le rendre&nbsp;<em>autonome</em>&nbsp;afin qu&#8217;il sache les retrouver à partir de l&#8217;identifiant de l&#8217;élément mais là je rentre dans le détail. Il faudra aussi&nbsp;faire de même avec les événements que l&#8217;élément peut lancer.</p>
<p>Deuxièmement, on place un instance de ce contrôle dans l&#8217;ItemTemplate du Repeater et à la racine de la page, dans un UpdatePanel. Pour le second, on veillera à mettre Visible à False afin de ne pas perturber l&#8217;affichage normal. Je vous rappelle que ce second élément n&#8217;est là que pour simuler un autre UpdatePanel, c&#8217;est un contrôle &#8220;<em>technique</em>&#8220;.</p>
<p style="background:#eee;"><code>&lt;ItemTemplate&gt;<br />&nbsp;&lt;Custom:Department runat="server" ID="DeptBlock" IsSelected='&lt;%#Eval("DepartmentID").ToString()==ElemID %&gt;'<br />&nbsp;&nbsp;&nbsp;ElemGroup='&lt;%#Eval("GroupName") %&gt;' ElemName='&lt;%#Eval("Name") %&gt;' ElemID='&lt;%#Eval("DepartmentID") %&gt;' /&gt;<br />&lt;/ItemTemplate&gt;</code></p>
<p>Troisièment, désactiver les raffraichissements automatiques des UpdatePanel pour prendre la main avec les attributs suivants :</p>
<p style="background:#eee;"><code>ChildrenAsTriggers="false" UpdateMode="Conditional"</code></p>
<p>Quatrièment, il ne reste plus qu&#8217;à modifier l&#8217;événement déclencheur (j&#8217;ai choisi ici ItemCommand du Repeater). Les étapes sont :</p>
<ul>
<li>désactiver le Repeater pour prendre la main</li>
<li>remplir le faux UpdatePanel</li>
<li>faire croire au système que c&#8217;est le bon UpdatePanel que l&#8217;on envoie</li>
<li>L&#8217;envoyer côté client</li>
</ul>
<p style="background:#eee;"><code>protected void DepartmentList_ItemCommand(object source, RepeaterCommandEventArgs e)<br />{<br />&nbsp;//on ne rebind PLUS la liste <br />&nbsp;// DepartmentList.DataBind();<br />&nbsp;//et on la "désactive" sinon, elle a tendance à se construire toute seule<br />&nbsp;DepartmentList.DataSource = null;<br />&nbsp;DepartmentList.DataSourceID = null;</p>
<p>&nbsp;//en revanche, on configure le FakeUpdatePanel<br />&nbsp;//...ici, je mets des données bidon mais je devrais charge mon élément individuel<br />&nbsp;FakeDepElem.ElemGroup = "FAKE MIS A JOUR";<br />&nbsp;FakeDepElem.ElemName = "Fake Dept";<br />&nbsp;FakeDepElem.ElemID = e.CommandArgument.ToString();<br />&nbsp;FakeDepElem.IsSelected = true;<br />&nbsp;//on rend l'élément visible sinon la méthode Render ne retournera rien<br />&nbsp;FakeDepElem.Visible = true;</p>
<p>&nbsp;//ICI, c'est le point technique, on change l'ID du faux UpdatePanel<br />&nbsp;//le fait de changer l'identifiant de l'update panel va permettre de cibler un autre updatepanel coté client.<br />&nbsp;<ins>FakeElementUP.ID = e.CommandName;</ins><br />&nbsp;//on envoie le panel au client<br />&nbsp;FakeElementUP.Update();<br />}</code></p>
<p>Le point le plus important est le remplacement de l&#8217;identifiant de mon faux UpdatePanel. Une fois renvoyé au client, la partie JavaScript d&#8217;Ajax cherche l&#8217;UpdatePanel spécifié et le remplace, sans se rendre compte de l&#8217;altération. La capture faite avec Fiddler ci-dessous montre ce que renvoie Ajax au client. Une entête identifie le bloc (l&#8217;UpdatePanel) à mettre à jour suivi du code HTML à remplacer. C&#8217;est cette entête finalement que nous avons altéré.</p>
<p><code>632|updatePanel|DepartmentList_ctl03_DeptBlock_ElementUP|</code></p>
<p><a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/fiddler-injectionupdatepanel.png"><img alt="Verification avec Fiddler" src="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.fiddler-injectionupdatepanel_m.jpg" border="0" /></a></p>
<p>Dans ce code, vous voyez que j&#8217;utilise <em>e.CommandName</em>. Ce choix est arbitraire. Pour fonctionner, le handler de l&#8217;événement a besoin à minima des informations suivantes :</p>
<ul>
<li>l&#8217;identifiant de l&#8217;élément (ou un moyen de le retrouver)</li>
<li>l&#8217;identifiant de l&#8217;UpdatePanel à mettre à jour</li>
</ul>
<p style="background:#eee;"><code>SelectBtn.CommandArgument = ElemID;<br />SelectBtn.CommandName = ElementUP.UniqueID;</code></p>
<p>Moi je les passe explicitement dans la commande mais on peut imaginer de les retrouver avec le paramètre <em>source</em> ou par un autre moyen.</p>
<p>J&#8217;ai pu mettre en oeuvre cette technique massivement dans un site web grand public de courses en ligne que nous (Bewise)&nbsp;avons réalisé pour un client. Je peux donc vous dire qu&#8217;elle a été validée à tous les niveaux : performances, maintenabilité, fiabilité, sécurité. Bien évidement, elle est beaucoup plus complexe que cela car beaucoup plus riche fonctionnellement (je dis cela pour ceux qui peuvent rester sur leur faim).</p>
<h5>Effets de bord :</h5>
<p>Si la Trace est active, vous risquez de voir apparaître une erreur précisant qu&#8217;il y a des doublons dans les ID des contrôles et le module de Trace ne sait pas le gérer (et donc lève une exception). Bizarrement, l&#8217;erreur n&#8217;est plus levée si la pile est pleine (requestLimit). Si vous avez plus d&#8217;infos sur ce comportement non déterministe ou un moyen de contournement&#8230;</p>
<h5>Code Source :</h5>
<p>Le code source utilise juste une connexion à la base AdventureWorks de Microsoft. Vous aurez juste à changer la chaîne de connexion dans le web.config&nbsp;et le nom du serveur web dans les propriétés du projet. Le code est téléchargeable <a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/UpdatePanelInjection.zip">ici</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/148/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/148/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=148&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2008/01/16/ajax-updatepanel-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.app-updatepanelinjection_m.jpg" medium="image" />

		<media:content url="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.controltree-injectionupdatepanel_m.jpg" medium="image">
			<media:title type="html">arbre de controle du repeater</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/labs/UpdatePanel-injection/.fiddler-injectionupdatepanel_m.jpg" medium="image">
			<media:title type="html">Verification avec Fiddler</media:title>
		</media:content>
	</item>
		<item>
		<title>Architecte ASP.NET du site Express Drive</title>
		<link>http://blog.djeepy1.net/2007/09/02/architecte-asp-net-du-site-express-drive/</link>
		<comments>http://blog.djeepy1.net/2007/09/02/architecte-asp-net-du-site-express-drive/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 12:50:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/09/02/architecte-asp-net-du-site-express-drive/</guid>
		<description><![CDATA[Un petit peu de pub pour un client, pour Bewise (et un peu pour moi &#160;avec la présentation du site Express Drive. Express Drive est un site de courses en ligne tout ce qu&#8217;il y a de plus classique sauf que derrière se cache un concept excellent : le drive. Vous faîtes vos courses sur [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=159&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Un petit peu de pub pour un client, pour <a href="http://www.bewise.fr/"><strong>Bewise</strong></a> (et un peu pour moi <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &nbsp;avec la présentation du site <a href="http://www.expressdrive.fr/"><strong>Express Drive</strong></a>.</p>
<p>Express Drive est un site de <strong>courses en ligne</strong> tout ce qu&#8217;il y a de plus classique sauf que derrière se cache un concept excellent : <strong>le drive</strong>. Vous faîtes vos courses sur le web et vous passez les prendre au magasin<img style="float:right;width:310px;margin:1em 0 1em 1em;" alt="Express Drive de E. Leclerc Roques" src="http://media.djeepy1.net/public/drive-roques.jpg" />. Même pas besoin de se garer, vous allez dans les voies réservées et n&#8217;avez qu&#8217;à ouvrir votre coffre. </p>
<p>Pas besoin de citer le nom du client, c&#8217;est écrit sur la photo. Actuellement, il n&#8217;y a qu&#8217;un seul magasin pilote en france (et c&#8217;est ici, près de&nbsp;Toulouse)&nbsp;mais nul doute que les prochains ouvriront bientôt près de chez vous.</p>
<p>Je suis fan de ce concept mais ce qui me rend fier c&#8217;est que j&#8217;ai été l&#8217;<strong>architecte technique</strong>&nbsp;du site web Express Drive et Bewise est en grande partie responsable de la mise en oeuvre (merci Jocelyn). Nous sommes heureux d&#8217;avoir pu accompagner notre client à développer son site Web en un temps record.</p>
<p>Et comme un blog de geek ne peut pas se contenter de cette simple annonce, ouvrons un peu le capot du site&#8230;</p>
<p>Sans entrer dans le détail, ce site est <strong>100% XHTML + CSS 2.0</strong> (bon d&#8217;accord, on a dû prendre quelques raccourcis de temps en temps).&nbsp;Le site tire aussi énormément partie des <strong>extensions AJAX de ASP.NET</strong>. En particulier la page de courses qui est 100% en <strong>AJAX</strong> et&nbsp;où nous avons poussé à fond l&#8217;utilisation et la maîtrise des <strong>UpdatePanel</strong>.</p>
<p>Ce site n&#8217;est qu&#8217;un premier jet et va s&#8217;enrichir de nombreuses fonctionnalités pour atteindre le niveau de ces concurrents Houra, Ooshop, AuchanDirect, etc.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/159/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/159/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=159&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/09/02/architecte-asp-net-du-site-express-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/drive-roques.jpg" medium="image">
			<media:title type="html">Express Drive de E. Leclerc Roques</media:title>
		</media:content>
	</item>
		<item>
		<title>Je n&#8217;aime pas les FormView</title>
		<link>http://blog.djeepy1.net/2007/08/03/je-naime-pas-les-formview/</link>
		<comments>http://blog.djeepy1.net/2007/08/03/je-naime-pas-les-formview/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 02:41:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/08/03/je-naime-pas-les-formview/</guid>
		<description><![CDATA[Même si je fais du web de façon intensive depuis plusieurs années, je n&#8217;ai jamais creusé les contrôles de databinding tout prêt de ASP.NET (ni 1.1, ni 2.0). Je peux même dire que je suis novice&#160;avec les GridView, FormView et autres DetailView. Je suis confronté à ces contrôles depuis quelques mois maintenant dans le cadre [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=163&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Même si je fais du web de façon intensive depuis plusieurs années, je n&#8217;ai jamais creusé les contrôles de databinding tout prêt de ASP.NET (ni 1.1, ni 2.0). Je peux même dire que je suis novice&nbsp;avec les <strong>GridView</strong>, <strong>FormView</strong> et autres <strong>DetailView</strong>.</p>
<p>Je suis confronté à ces contrôles depuis quelques mois maintenant dans le cadre de projets qui en tirent parti. Je dois dire que je commence à être séduit par ce mode de fonctionnement même si je reste accro aux &#8220;<em><strong>custom templated controls</strong></em>&#8220;.</p>
<p>Sauf que la semaine dernière j&#8217;ai découvert que la FormView a un fonctionnement que je n&#8217;aime pas du tout et qu&#8217;il est important de connaître pour bien maîtriser ce que l&#8217;on fait.&nbsp;Admettons que dans la FormView, vous placiez un <strong>LinkButton</strong> et un <strong>CustomValidator</strong> pour vérifier une condition. Le LinkButton a la propriété <strong>CausesValidation</strong> à&nbsp;true.&nbsp;Vous branchez l&#8217;événement click sur votre méthode et là, tout bascule, en déboguant, vous vous apercevez que la validation (votre méthode <em>OnServerValidate</em>) est appelée 2 fois.</p>
<p>La validation est garantie par la propriété CausesValidation du bouton comme on peut le voir ci-dessous&nbsp;dans la méthode RaisePostBackEvent du LinkButton via <a href="http://www.aisto.com/roeder/dotnet/">Reflector</a>. </p>
<p style="background:#eee;"><code>protected virtual void RaisePostBackEvent(string eventArgument)<br />{<br />&nbsp;&nbsp;&nbsp; base.ValidateEvent(this.UniqueID, eventArgument);<br />&nbsp;&nbsp;&nbsp; if (this.CausesValidation)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.Page.Validate(this.ValidationGroup);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; this.OnClick(EventArgs.Empty);<br />&nbsp;&nbsp;&nbsp; this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument));<br />}</code></p>
<p>Mais qui appelle donc la validation une seconde fois ? On peut voir aussi dans cette méthode qu&#8217;un LinkButton lève l&#8217;événement Click mais aussi l&#8217;événement Command, même si on n&#8217;a pas précisé de CommandName. Le problème, c&#8217;est qu&#8217;un événement Command utilise le mécanisme de <strong>Bubbling</strong> (méthode <em>OnBubbleEvent</em>) et remonte dans la hierarchie de contrôle jusqu&#8217;à ce que quelqu&#8217;un l&#8217;intercepte. Et devinez qui le prend en charge ? La FormView !!</p>
<p>Sans vérifier si la FormView est à même de prendre en charge la commande (représentée par le paramètre CommandName), elle lance la validation comme on peut le voir dans le code de la méthode OnBubbleEvent().</p>
<p style="background:#eee;"><code>if (causesValidation &amp;&amp; (this.Page != null))<br />{<br />&nbsp;&nbsp;&nbsp;this.Page.Validate(validationGroup);<br />}</code></p>
<p>Ce qui fait que si vous préférez utiliser l&#8217;événement Click, vous aurez 2 validations de la page (ou du ValidationGroup). </p>
<p><strong><ins>La solution :</ins></strong></p>
<ul>
<li>utiliser l&#8217;événement Command de la FormView pour faire vos traitements dans les boutons se trouvant en son sein.</li>
<li>mettre la propriété CausesValidation à false et appeler manuellement Page.Validate() dans la méthode qui gère l&#8217;événement Click</li>
</ul>
<p><strong><ins>Moralité</ins></strong> : FormView stinks !</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/163/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/163/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=163&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/08/03/je-naime-pas-les-formview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>
	</item>
		<item>
		<title>unable to build project output group &#8216;content files from WebApplication&#8217;</title>
		<link>http://blog.djeepy1.net/2007/08/01/unable-to-build-project-output-group-content-files-from-webapplication/</link>
		<comments>http://blog.djeepy1.net/2007/08/01/unable-to-build-project-output-group-content-files-from-webapplication/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 04:53:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/08/01/unable-to-build-project-output-group-content-files-from-webapplication/</guid>
		<description><![CDATA[Dans un projet de setup web, quand vous souhaitez copier les &#8216;Content Files&#8217; des sorties d&#8217;un projet de type Web Application, si vous rencontrez un jour cette erreur, je vous propose la solution&#160;: unable to build project output group 'content files from WebApplication' Le problème vient du fait qu&#8217;un fichier du site Web n&#8217;est pas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=164&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dans un projet de <strong>setup web</strong>, quand vous souhaitez copier les <strong>&#8216;Content Files&#8217;</strong> des sorties d&#8217;un projet de type <strong>Web Application</strong>, si vous rencontrez un jour cette erreur, je vous propose la solution&nbsp;:</p>
<blockquote>
<p><code>unable to build project output group 'content files from WebApplication'</code> </p>
</blockquote>
<p>Le problème vient du fait qu&#8217;un fichier du site Web n&#8217;est pas trouvé sur le disque (le petit icône avec un triangle jaune). La compilation du projet web ne génère aucun warning mais un projet de setup lève une erreur car lui a besoin du fichier manquant.</p>
<p>Plutôt que de vous arracher les cheveux, naviguez dans tous les répertoires du site dans le Solution Explorer (je sais ça peut être long) à la recherche du triangle jaune (ça ferait un bon titre pour un film) et supprimer cette référence.</p>
<p><ins>Tips</ins> : cherchez en priorité dans le répertoire des images, c&#8217;est souvent là qu&#8217;il y a le plus de <del>boxon</del> fichiers.</p>
<p>&nbsp;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/164/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/164/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=164&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/08/01/unable-to-build-project-output-group-content-files-from-webapplication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajouter une CSS dans une page avec une MasterPage</title>
		<link>http://blog.djeepy1.net/2007/06/28/ajouter-une-css-dans-une-page-avec-une-masterpage/</link>
		<comments>http://blog.djeepy1.net/2007/06/28/ajouter-une-css-dans-une-page-avec-une-masterpage/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 10:17:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/06/28/ajouter-une-css-dans-une-page-avec-une-masterpage/</guid>
		<description><![CDATA[Quand on utilise les MasterPages, il devient impossible d&#8217;ajouter un lien vers une feuille de style directement dans une page. En effet, on ne peut mettre la référence à la CSS que dans la section&#160;&#60;head/&#62; et les&#160;&#60;asp:Content&#62; des pages enfants doivent se trouver obligatoirement dans le&#160;&#60;body/&#62; (la &#60;form/&#62; plus exactement). On a tout de même [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=167&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quand on utilise les MasterPages, il devient impossible d&#8217;ajouter un lien vers une feuille de style directement dans une page. En effet, on ne peut mettre la référence à la CSS que dans la section&nbsp;<code>&lt;head/&gt;</code> et les&nbsp;<code>&lt;asp:Content&gt;</code> des pages enfants doivent se trouver obligatoirement dans le&nbsp;<code>&lt;body/&gt;</code> (la &lt;form/&gt; plus exactement).</p>
<p>On a tout de même accès à la section&nbsp;<code>&lt;head/&gt;</code> depuis le code pour ajouter manuellement un lien vers une CSS avec un contrôle de type HtmlLink.</p>
<p style="background:#eee;"><code>HtmlLink cssLink = new HtmlLink();<br />cssLink.Href = "../mapage.css";<br />cssLink.Attributes.Add("rel", "stylesheet");<br />cssLink.Attributes.Add("type", "text/css");<br />Page.Header.Controls.Add(cssLink);</code></p>
<p>Afin de rendre cette utilisation plus souple, on peut encapsuler ce code dans un contrôle afin de l&#8217;ajouter graphiquement dans le designer de page :</p>
<p><code></p>
<p style="background:#eee;">public class StyleSheetLink : Control<br />{<br />&nbsp; private string _href;<br />&nbsp; [UrlProperty]<br />&nbsp; public string Href<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; get { return _href; }<br />&nbsp;&nbsp;&nbsp; set { _href = value; }<br />&nbsp; }<br />&nbsp; protected override void OnPreRender(EventArgs e)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; HtmlLink cssLink = new HtmlLink();<br />&nbsp;&nbsp;&nbsp; cssLink.Href = _href;<br />&nbsp;&nbsp;&nbsp; cssLink.Attributes.Add("rel", "stylesheet");<br />&nbsp;&nbsp;&nbsp; cssLink.Attributes.Add("type", "text/css");<br />&nbsp;&nbsp;&nbsp; Page.Header.Controls.Add(cssLink);<br />&nbsp;&nbsp;}</p>
<p>Ainsi, il suffit d'ajouter dans une page le tag suivant :</p>
<p style="background:#eee;"><code>&lt;Bewise:StyleSheetLink ID="css" runat="server" Href="~/_css/default.css" /&gt;</code></p>
<p>Pour améliorer ce contrôle, on&nbsp;pourrait ajouter une vérification dans la liste des contrôles du header pour savoir&nbsp;si&nbsp;la CSS&nbsp;n'est pas déjà référencée.</p>
<p></code></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/167/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/167/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=167&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/06/28/ajouter-une-css-dans-une-page-avec-une-masterpage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>
	</item>
		<item>
		<title>Afficher un PNG avec un channel alpha sur IE6</title>
		<link>http://blog.djeepy1.net/2007/06/12/afficher-un-png-avec-un-channel-alpha-sur-ie6/</link>
		<comments>http://blog.djeepy1.net/2007/06/12/afficher-un-png-avec-un-channel-alpha-sur-ie6/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 01:10:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/06/12/afficher-un-png-avec-un-channel-alpha-sur-ie6/</guid>
		<description><![CDATA[La problématique Elle est très simple, IE6 ne gère pas le channel alpha sur une image au format PNG. Je ne parle pas de simple transparence (ça c&#8217;est géré) mais d&#8217;une transparence en dégradé. (définition wikipedia) La base de travail Nous allons faire fonctionner le channel alpha pour une image classique et pour image en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=168&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h4>La problématique </h4>
<p>Elle est très simple, IE6 ne gère pas le channel alpha sur une image au format PNG. Je ne parle pas de simple transparence (ça c&#8217;est géré) mais d&#8217;une transparence en dégradé. (<a href="http://en.wikipedia.org/wiki/Alpha_transparency">définition wikipedia</a>)</p>
<p><img alt="" src="http://media.djeepy1.net/public/labs/png-fix/CaptureIE6.png" /></p>
<h4>La base de travail</h4>
<p>Nous allons faire fonctionner le channel alpha pour une image classique et pour image en background. Le code HTML est le suivant :</p>
<p><code style="background:#eee;"></p>
<p>&lt;img src="images/logoalpha.png" /&gt;</p>
<p>&lt;h1&gt;&lt;span&gt;Les passionnés du malt&lt;/span&gt;&lt;/h1&gt;</p>
<p></code></p>
<p>Le code CSS est le suivant :</p>
<p style="background:#eee;"><code>#headings h1 {<br />&nbsp; height:241px;<br />&nbsp; width:512px;<br />&nbsp; background: url( '../images/logoalpha.png' ) no-repeat;<br />}<br />#headings h1 span {<br />&nbsp; display: none;<br />}</code></p>
<h4>La solution</h4>
<p>Internet Explorer dispose d&#8217;un système de filtres pour&nbsp;effectuer des opérations de rendu sur des éléments de l&#8217;arbre DOM. Notamment, il existe un filtre appelé <strong>AlphaImageLoader</strong> qui permet de gérer le channel alpha. Pour appliquer un filtre, il suffit d&#8217;insérer une directive CSS <code>filter</code>. Pour l&#8217;image background, c&#8217;est assez simple, on applique directement la directive à la place de <code>background :</code></p>
<p style="background:#eee;"><code>filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/logoalpha.png', sizingMethod='scale'); </code></p>
<p>Cependant, pour rester compatible avec IE7 et Firefox, on doit mettre la directive dans un hack pour IE et on garde un background classique pour les autres navigateurs. Le hack qui est interprété uniquement par IE (inférieur à la version 7) est &#8220;<code><strong>* html</strong></code>&#8221; :</p>
<p style="background:#eee;"><code><strong>* html</strong> #headings h1 {<br />&nbsp; /* on annule le background et on le red‚finit avec le filtre */<br />&nbsp; background:none;<br />&nbsp; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/logoalpha.png', sizingMethod='scale'); <br />}</code></p>
<p>Pour l&#8217;image classique, on ne peut appliquer directement la directive <strong>filter</strong> en CSS. On doit recourir à du Javascript pour appliquer le filtre. Il existe un moyen d&#8217;appliquer un script sur un élément avec IE6, c&#8217;est l&#8217;utilisation des <em>behaviours</em>. Un&nbsp;<em>behaviour</em> est un bout de Javascript encapsulé dans un fichier .<strong>HTC</strong>&nbsp;formaté d&#8217;une certaine façon :</p>
<p style="background:#eee;"><code>&lt;public:component&gt;<br />&nbsp; &lt;public:attach event="onpropertychange" onevent="propertyChanged()" /&gt;<br />&nbsp;&nbsp;&lt;script&gt;<br />[MON SCRIPT ICI]<br />&nbsp;&nbsp;/script&gt;<br />&lt;/public:component&gt;</code></p>
<p>On voit ici que le script sera exécuté au changement d&#8217;une propriété du tag sur lequel il est appliqué. Je ne vais pas décrire le script ici et je vous propose plutôt de le télécharger <a href="http://blog.djeepy1.net/public/labs/png-fix/png.htc">ici</a>. Retenez juste qu&#8217;il a besoin d&#8217;un gif transparent pour appliquer le filtre (je n&#8217;ai pas cherché à comprendre <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>Mais alors, comment appliqué le&nbsp;<code>behaviour</code> ? En CSS, il suffit d&#8217;ajouter :</p>
<p style="background:#eee;"><code>.alphaPNG {<br />&nbsp; /* compris uniquement par IE --&gt; javascript executé sur l'élément */<br />&nbsp; behavior:url('png.htc');<br />}</code></p>
<p>Vous aurez compris que j&#8217;ai juste à appliquer la classe CSS sur mon image PNG :</p>
<p style="background:#eee;"><code>&lt;img src="logoalpha.png" width="512" height="241" class="alphaPNG" /&gt;</code></p>
<p>Vous noterez que je fixe la taille sinon, le rendu ne se fait pas.</p>
<p>Pour voir ce que cela donne, rendez-vous sur cette page : <a href="http://blog.djeepy1.net/public/labs/png-fix/SampleLogo.htm">http://blog.djeepy1.net/public/labs/png-fix/SampleLogo.htm</a><br />Pour télécharger tout le projet :&nbsp;&nbsp;<a href="http://blog.djeepy1.net/public/labs/png-fix/sample.zip">http://blog.djeepy1.net/public/labs/png-fix/sample.zip</a></p>
<p><sub>Merci à Mitch pour le logo.</sub></p>
<p>&nbsp;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/168/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/168/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=168&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/06/12/afficher-un-png-avec-un-channel-alpha-sur-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>

		<media:content url="http://media.djeepy1.net/public/labs/png-fix/CaptureIE6.png" medium="image" />
	</item>
		<item>
		<title>Compilation conditionnelle en ASP.NET 2.0</title>
		<link>http://blog.djeepy1.net/2007/06/10/compilation-conditionnelle-en-asp-net-2-0/</link>
		<comments>http://blog.djeepy1.net/2007/06/10/compilation-conditionnelle-en-asp-net-2-0/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 05:51:00 +0000</pubDate>
		<dc:creator>Djeepy1</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://djeepy1.wordpress.com/2007/06/10/compilation-conditionnelle-en-asp-net-2-0/</guid>
		<description><![CDATA[Je me suis retrouvé récemment face à un doute technique. Après avoir longuement expliqué l&#8217;intérêt de mettre des traces dans les différents événements d&#8217;une page ou d&#8217;un contrôle ASP.NET et l&#8217;importance de conditionner ces traces pour ne pas les retrouver dans l&#8217;environnement de production, je me suis retrouvé coincé car la technique a changé entre [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=169&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Je me suis retrouvé récemment face à un doute technique. Après avoir longuement expliqué l&#8217;intérêt de mettre des traces dans les différents événements d&#8217;une page ou d&#8217;un contrôle ASP.NET et l&#8217;importance de conditionner ces traces pour ne pas les retrouver dans l&#8217;environnement de production, je me suis retrouvé coincé car la technique a changé entre ASP.NET 1.x et ASP.NET 2.0. Explication&#8230;</p>
<p>Dans ma page, je mets les traces souhaitées :</p>
<p style="background:#eee;"><code>#if TRACE<br />&nbsp;&nbsp;&nbsp; Context.Trace.Write("MaPage", "Début de l'événement OnLoad");<br />#endif</code></p>
<p>Les pages et les contrôles ASCX étant compilés dynamiquement à l&#8217;exécution, il est inutile de mettre une directive de compilation dans votre projet (sauf si vous utilisez la fonctionnalité de publication avec les pages précompilées et non <em>updateable</em>).</p>
<p>En 1.x, j&#8217;avais l&#8217;habitude de configurer la directive dans la section &lt;compilation/&gt; du web.config :</p>
<p style="border-right:#111 1px;border-top:#111 1px;background:#eee;border-left:#111 1px;border-bottom:#111 1px;"><code>&lt;compilation debug="true" compilerOptions="/d:TRACE"&gt;</code></p>
<p>Là, l&#8217;intellisense ne me propose pas l&#8217;attribut <strong>CompilerOptions</strong> ce qui m&#8217;est confirmé par une erreur au runtime. Un petit tour sur la toile pour comprendre que la compilation est plus complexe (fine)&nbsp;en ASP.NET 2.0.<br />Heureusement, il existe toujours cette configuration dans la directive de page, ce qui n&#8217;est pas plus mal d&#8217;ailleurs pour restreindre le scope de la directive de compilation :</p>
<p style="border-right:#111 1px;border-top:#111 1px;background:#eee;border-left:#111 1px;border-bottom:#111 1px;"><code>&lt;%@Page Language="C#" CompilerOptions="/d:TRACE" %&gt;</code></p>
<p>Pour ceux qui souhaitent utiliser la directive pour l&#8217;ensemble du site, il faut vous tourner vers la section de configuration &lt;system.codeDom&gt; où on doit déclarer des &lt;compilers&gt; avec leurs paramètres pour des jeux de fichiers du site. dans l&#8217;exemple ci-dessous,&nbsp;on définit que les fichier .cs seront compilés via un CSharpCodeProvider (csc.exe)&nbsp;avec&nbsp;la directive&nbsp;TRACE.</p>
<p style="border-right:#111 1px;border-top:#111 1px;background:#eee;border-left:#111 1px;border-bottom:#111 1px;"><code>&lt;system.codedom&gt;<br />&nbsp;&nbsp; &lt;compilers&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;compiler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; language="c#;cs;csharp" extension=".cs" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compilerOptions="/d:TRACE"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; &lt;/compilers&gt;<br />&lt;/system.codedom&gt;</code></p>
<p>Attention toutefois avec cette méthode car le site doit être exécuté en FullTrust pour avoir accès aux options de compilation.</p>
<p><sub>Merci à Scott Allen pour les explications.</sub></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/djeepy1.wordpress.com/169/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/djeepy1.wordpress.com/169/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/djeepy1.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/djeepy1.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/djeepy1.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.djeepy1.net&amp;blog=7511412&amp;post=169&amp;subd=djeepy1&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.djeepy1.net/2007/06/10/compilation-conditionnelle-en-asp-net-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5bd484f181f5352c2e531cb5cc78aef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">djeepy1</media:title>
		</media:content>
	</item>
	</channel>
</rss>
