<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://didierdanse.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>didierdanse.net</title><link>http://didierdanse.net/blogs/</link><description>Site personnel de Didier Danse&lt;BR&gt;Didier Danse's Personnal Website&lt;BR&gt;Microsoft Most Valuable Professional SharePoint</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Microsoft TechDays Belgium: March 10-12 2009, Antwerp</title><link>http://didierdanse.net/blogs/dev_en/archive/2009/01/03/microsoft-techdays-belgium-march-10-12-2009-antwerp.aspx</link><pubDate>Sat, 03 Jan 2009 18:42:33 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:197</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;IT Professionals: &lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;Come and learn more about how the System Center products can help you to &lt;strong&gt;manage your environment more efficiently &lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Explore the &lt;strong&gt;new functionalities&lt;/strong&gt; in Windows Server such as &lt;strong&gt;virtualization, directory services&lt;/strong&gt; &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Find out what new &lt;strong&gt;enterprise features&lt;/strong&gt; will be included in Windows 7 &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;How to &lt;strong&gt;secure your environment&lt;/strong&gt; with the Microsoft Security Products &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;How will the &lt;strong&gt;Microsoft Virtualization&lt;/strong&gt; technologies help you simplify your IT Infrastructure &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;What &lt;strong&gt;improvements have been done in SQL Server&lt;/strong&gt; &lt;strong&gt;2008&lt;/strong&gt; to ease the management of your SQL infrastructure &lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;em&gt;Developers: &lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;Three developer tracks: &lt;strong&gt;Tools and Languages, Web and Client Experience, Servers and services&lt;/strong&gt; (SQL Server 2008, SharePoint, Office) &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Become familiar with the &lt;strong&gt;technologies&lt;/strong&gt; released with .NET Framework 3.5 SP1 &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Learn how to &lt;strong&gt;use the technologies&lt;/strong&gt; that will matter in the future, such as REST, cloud, WPF, XAML, … &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Learn about Microsoft’s newest announcements around cloud computing (&lt;strong&gt;Azure&lt;/strong&gt;) &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;See what is coming with &lt;strong&gt;Visual Studio 2010, .NET 4.0&lt;/strong&gt; (C# and VB) &lt;/em&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;em&gt;On March 10, at the &lt;strong&gt;preconference&lt;/strong&gt;, you have the choice between three targeted tracks: &lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;em&gt;It Pro’s : &lt;strong&gt;Windows Server 2008 R2 Essentials&lt;/strong&gt; &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Developers: Deep-dive into development for &lt;strong&gt;Microsoft Office SharePoint Server 2007&lt;/strong&gt; &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;Architects: &lt;strong&gt;Software + Services&lt;/strong&gt;: the convergence of SOA, SaaS, Cloud Computing and Web 2.0&lt;/em&gt;&amp;#160; &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;This event is not free but you will have the opportunity to listen and discuss with top speakers coming from all around the world.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Early bird rate&lt;/strong&gt; if registering before January 16th!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Coming from Luxembourg&lt;/strong&gt;? &lt;a title="send us your coordinates" href="mailto:tdbelux@microsoft.com?subject=Information%20on%20de%7blux%7de%20package%20for%20TechDays"&gt;Send your coordinates&lt;/a&gt; and receive information about de{lux} package.&lt;/p&gt;  &lt;p&gt;Information and registration: &lt;a title="http://www.microsoft.com/belux/techdays/about.aspx" href="http://www.microsoft.com/belux/techdays/about.aspx"&gt;http://www.microsoft.com/belux/techdays/about.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=197" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/English/default.aspx">English</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Event/default.aspx">Event</category></item><item><title>Microsoft TechDays France du 10 au 12 février 2009 à Paris (évènement gratuit)</title><link>http://didierdanse.net/blogs/dev/archive/2009/01/03/microsoft-techdays-france-du-10-au-12-f-233-vrier-2009-224-paris-233-v-232-nement-gratuit.aspx</link><pubDate>Sat, 03 Jan 2009 18:33:37 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:196</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;23 parcours thématiques, 300 conférences techniques, plus de 140 partenaires experts Microsoft autour de 5 grands thèmes :&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;strong&gt;Découvertes&lt;/strong&gt;         &lt;br /&gt;Windows 7, Windows Azure, SaaS, Cloud Computing… &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Architecture et Développement&lt;/strong&gt;         &lt;br /&gt;Windows Live, SOA, Visual Studio, .NET, Silverlight, Design, Biztalk… &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Infrastructure et socle applicatif de l&amp;#39;entreprise numérique&lt;/strong&gt;         &lt;br /&gt;SQL Server, Windows Server, Virtualisation, Microsoft Desktop Optimization Pack, High Performance Computing, Small Business Server, Enterprise Business Server, Sécurité, ERP… &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Efficacité individuelle et collective&lt;/strong&gt;         &lt;br /&gt;Poste de travail, Communications Unifiées, Recherche en entreprise, Microsoft PerformancePoint, SharePoint, Office Communications Server, CRM… &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Enjeux&lt;/strong&gt;         &lt;br /&gt;Sécurité, Interopérabilité, Accessibilité, Education, Recherche, Programme de licences...&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Site officiel: &lt;a title="http://www.microsoft.com/france/mstechdays/" href="http://www.microsoft.com/france/mstechdays/"&gt;http://www.microsoft.com/france/mstechdays/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Inscriptions: &lt;a title="http://galilee.microsoft.fr/TechDays2009/Default.aspx" href="http://galilee.microsoft.fr/TechDays2009/Default.aspx"&gt;http://galilee.microsoft.fr/TechDays2009/Default.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=196" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Vista/default.aspx">Vista</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/TechDays/default.aspx">TechDays</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/.NET/default.aspx">.NET</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Evenement/default.aspx">Evenement</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/French_2F00_Fran_E700_ais/default.aspx">French/Français</category></item><item><title>SharePoint: A Proxy Web Service that allows the use of GetListItems in Lists.asmx from InfoPath</title><link>http://didierdanse.net/blogs/dev_en/archive/2009/01/02/sharepoint-a-proxy-web-service-that-allows-the-use-of-getlistitems-in-lists-asmx-from-infopath.aspx</link><pubDate>Fri, 02 Jan 2009 21:19:11 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:195</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When you call the GetListItems method in Lists.asmx Web Service, you have to pass some XML parameters. These parameters are not well understood by the Web Service so the use of this Web Service can be difficult and maybe impossible.&lt;/p&gt;  &lt;p&gt;XML parameters are written as strings in InfoPath window (I know that XML is just a string that follow some predefined rules).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev_en/image_1D8E06A6.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="427" alt="image" src="http://didierdanse.net/blogs/dev_en/image_thumb_7F45E060.png" width="635" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This string which is encoded before pass it to the Web Service is no more understandable by the Web Service.&lt;/p&gt;  &lt;p&gt;As the problem is find we can do some additional tests. Calling the Web Service from a .NET application can be done without any issue. According to this, there is a solution: create and use a Proxy Web Service (coded using the .NET platform) that will be deployed to SharePoint platform. This Proxy will convert the string to a real XML content.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &amp;lt;WebMethod()&amp;gt; _
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetListItems(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; listName &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; viewID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; query &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; viewFields &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; rowLimit &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; queryOptions &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; webID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; service &lt;span class="kwrd"&gt;As&lt;/span&gt; SharePointListsWS.Lists = GetWebServiceInstance(webID)

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; queryElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;Query&amp;quot;&lt;/span&gt;, query)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; viewFieldsElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;ViewFields&amp;quot;&lt;/span&gt;, viewFields)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; queryOptionsElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;QueryOptions&amp;quot;&lt;/span&gt;, queryOptions)

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; service.GetListItems(listName, viewID, queryElement, viewFieldsElement, rowLimit, queryOptionsElement, webID)

    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetWebServiceInstance(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; webID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; SharePointListsWS.Lists
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; service &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; SharePointListsWS.Lists
        service.Credentials = System.Net.CredentialCache.DefaultCredentials

        service.Url = SPContext.Current.Web.Url + &lt;span class="str"&gt;&amp;quot;/_vti_bin/Lists.asmx&amp;quot;&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; service
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNode(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; name &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; innerXml &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; document &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; XmlDocument
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; node &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = document.CreateElement(name)
        node.InnerXml = innerXml
        &lt;span class="kwrd"&gt;Return&lt;/span&gt; node
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;

&lt;p&gt;After having transform strings parameters to correct XML content, the Proxy Web Service will pass the XML parameters to Lists.asmx Web Service. This time GetListItems method is able to interpret the parameters. Values coming from the GetListItems method are returned directly to the client (in this case InfoPath).&lt;/p&gt;

&lt;p&gt;If you want to code this Proxy Web Service, you have to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How to code a Web Service; &lt;/li&gt;

  &lt;li&gt;How to modify auto-generated elements to allow integration to SharePoint platform; &lt;/li&gt;

  &lt;li&gt;How to add this Web Service to SharePoint platform. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is a few articles about each of these topics. If you don’t want to do all these points, you can just install the attached Web Service: &lt;a title="Download" href="http://didierdanse.net/files/folders/193/download.aspx"&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is quite easy as you just have to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Unzip the attached file; &lt;/li&gt;

  &lt;li&gt;Click on install.bat. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Attention! Be aware that the actual version of this package will erase and replace spdisco.aspx file. When uninstall the Web Service the file is deleted. You should test it on test environment before put it in production. Furthermore, you should backup the file before any other operation.&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=195" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/English/default.aspx">English</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Web+Service/default.aspx">Web Service</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/InfoPath/default.aspx">InfoPath</category></item><item><title>SharePoint: Un Web Service intermédiaire pour réaliser des appels à GetListItems de Lists.asmx depuis InfoPath</title><link>http://didierdanse.net/blogs/dev/archive/2009/01/02/sharepoint-un-web-service-interm-233-diaire-pour-r-233-aliser-des-appels-224-getlistitems-de-lists-asmx-depuis-infopath.aspx</link><pubDate>Fri, 02 Jan 2009 21:18:28 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:194</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Lors d&amp;#39;un appel au Web Service Lists.asmx et plus exactement à la méthode GetListItems, il est souvent nécessaire de passer des paramètres de types XML. Ces paramètres sont mal interprétés, rendant ainsi l&amp;#39;utilisation du Web Service difficile voire impossible.&lt;/p&gt;  &lt;p&gt;Les paramètres XML sont indiqués dans InfoPath sous la forme d&amp;#39;une chaîne de caractères (ceci dit de l&amp;#39;XML, ce n&amp;#39;est jamais que des caractères qui respectent des règles prédéfinies). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/image_66C38C70.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="427" alt="image" src="http://didierdanse.net/blogs/dev/image_thumb_432C7F7A.png" width="635" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;C&amp;#39;est cette chaîne qui, une fois encodée pour être envoyée, n&amp;#39;est plus compréhensible par le Web Service.&lt;/p&gt;  &lt;p&gt;Une fois le problème repéré, des tests montrent que l&amp;#39;appel du Web Service depuis une application .NET se fait sans aucun souci. Sur base de ces informations, une solution s&amp;#39;offre à nous: utiliser un Web Service (écrit en .NET) que l&amp;#39;on déploie au sein de SharePoint afin de générer le message à envoyer de manière correcte.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &amp;lt;WebMethod()&amp;gt; _
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetListItems(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; listName &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; viewID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; query &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; viewFields &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; rowLimit &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; queryOptions &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; webID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; service &lt;span class="kwrd"&gt;As&lt;/span&gt; SharePointListsWS.Lists = GetWebServiceInstance(webID)

        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; queryElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;Query&amp;quot;&lt;/span&gt;, query)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; viewFieldsElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;ViewFields&amp;quot;&lt;/span&gt;, viewFields)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; queryOptionsElement &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = CreateNode(&lt;span class="str"&gt;&amp;quot;QueryOptions&amp;quot;&lt;/span&gt;, queryOptions)

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; service.GetListItems(listName, viewID, queryElement, viewFieldsElement, rowLimit, queryOptionsElement, webID)

    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetWebServiceInstance(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; webID &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; SharePointListsWS.Lists
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; service &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; SharePointListsWS.Lists
        service.Credentials = System.Net.CredentialCache.DefaultCredentials

        service.Url = SPContext.Current.Web.Url + &lt;span class="str"&gt;&amp;quot;/_vti_bin/Lists.asmx&amp;quot;&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; service
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNode(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; name &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; innerXml &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; document &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; XmlDocument
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; node &lt;span class="kwrd"&gt;As&lt;/span&gt; XmlNode = document.CreateElement(name)
        node.InnerXml = innerXml
        &lt;span class="kwrd"&gt;Return&lt;/span&gt; node
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;

&lt;p&gt;Ce Web Service, après avoir générer du XML valide et compréhensible, passe les paramètres au Web Service Lists.asmx qui, cette fois, pourra interpréter les paramètres en entrée. Les valeurs retournées par celui-ci sont quant à elle directement renvoyées vers le client appelant. &lt;/p&gt;

&lt;p&gt;Ce qu&amp;#39;il vous faut donc savoir pour réaliser ce Web Service intermédiaire:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Comment écrire un Web Service; &lt;/li&gt;

  &lt;li&gt;Comment permettre de l&amp;#39;intégrer dans SharePoint; &lt;/li&gt;

  &lt;li&gt;Comment le déployer dans SharePoint. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il existe de nombreux articles discutant de chacun des points. Pour simplifier la vie aux personnes qui ne souhaitent pas trop de temps, je vous joins un fichier zippé comprenant l&amp;#39;ensemble des fichiers nécessaires pour installer un tel Web Service: &lt;a title="Download" href="http://didierdanse.net/files/folders/193/download.aspx"&gt;Téléchargement&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La procédure se résume donc par: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Dézippez le fichier; &lt;/li&gt;

  &lt;li&gt;Appuyez sur install.bat. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Attention! La version actuelle de ce package fait que le fichier spdisco.aspx existant sur le serveur est remplacé par celui présent dans le package. Il est par ailleurs supprimé lors d&amp;#39;un retract de la solution. Faites un backup préalablement. &lt;/strong&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=194" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Web+Service/default.aspx">Web Service</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/French_2F00_Fran_E700_ais/default.aspx">French/Français</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/InfoPath/default.aspx">InfoPath</category></item><item><title>"Please insert the disk: Microsoft Visual Studio 2005 Professional Edition - ENU Disk 1" during Visual Studio 2005 installation</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/27/quot-please-insert-the-disk-microsoft-visual-studio-2005-professional-edition-enu-disk-1-quot-during-visual-studio-2005-installation.aspx</link><pubDate>Sat, 27 Dec 2008 12:39:17 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:192</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Attention, some people should be offended by this solution as it is a quite stupid solution but it is the only one I know that work :-)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy files from disk 1 to a drive on your computer. Example: c:\VS2005Install; &lt;/li&gt;    &lt;li&gt;Copy .cab files from disk 2 to the previously created folder; &lt;/li&gt;    &lt;li&gt;Then, run setup.exe available in the local folder. &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=192" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Vista: How to authorize remote assistance?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/27/vista-how-to-authorize-remote-assistance.aspx</link><pubDate>Sat, 27 Dec 2008 12:30:14 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:191</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When you ask someone for remote assistance or someone propose you to do remote assistance, you could receive a message that indicates that remote assistance is not permitted because of the firewall. You can enable remote assistance through the firewall by following this procedure:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Click on &lt;em&gt;Start&lt;/em&gt; button (Vista image);&lt;/li&gt;    &lt;li&gt;Select &lt;em&gt;Control Panel&lt;/em&gt;;&lt;/li&gt;    &lt;li&gt;Click on &lt;em&gt;Authorize a program in Windows firewall”&lt;/em&gt;;&lt;/li&gt;    &lt;li&gt;Click on &lt;em&gt;Continue&lt;/em&gt; when a window ask you the authorization to run the program;&lt;/li&gt;    &lt;li&gt;A window appears with the complete list of exceptions. Check the &lt;em&gt;remote assistance&lt;/em&gt; option;&lt;/li&gt;    &lt;li&gt;Click on &lt;em&gt;Ok&lt;/em&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now, you should have to possibility to use the remote assistance without any issue.&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=191" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Vista/default.aspx">Vista</category></item><item><title>How to avoid a complete IIS restart when deploying a SharePoint component?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/27/how-to-avoid-a-complete-iis-restart-when-deploying-a-sharepoint-component.aspx</link><pubDate>Sat, 27 Dec 2008 11:56:12 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:190</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;IIS (Internet Informations Services) is the web server made by Microsoft. When deploying a SharePoint component, it is recommended to restart this web server.&lt;/p&gt;  &lt;p&gt;But if you have a few applications on the same server, other applications will not be available until the web server will have finished the restart operation. &lt;/p&gt;  &lt;p&gt;We can avoid this by restart only a little part of this web server called &lt;em&gt;Application pool&lt;/em&gt;. So we can restart the application pool that host SharePoint with this command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;cscript.exe c:\windows\system32\iisapp.vbs /a SharePointAppPool&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=190" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/IIS/default.aspx">IIS</category></item><item><title>ASP.NET AJAX: All my UpdatePanel content are refreshed when post back occured instead of refreshing only one UpdatePanel content. Why?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/27/asp-net-ajax-all-my-updatepanel-content-are-refreshed-when-post-back-occured-instead-of-refreshing-only-one-updatepanel-content-why.aspx</link><pubDate>Sat, 27 Dec 2008 11:48:44 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:189</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This post applies to all versions of ASP.NET AJAX.&lt;/p&gt;  &lt;p&gt;Here is the answer to a simple question that any beginner will deal with one day.&lt;/p&gt;  &lt;p&gt;Let’s imagine a web page with these contents:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Two update panels; &lt;/li&gt;    &lt;li&gt;One timer; &lt;/li&gt;    &lt;li&gt;One button and one label in each update panel. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So our web page will have the following look (we should follow naming guidelines):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.NETAJAXUntimerattachun_11EA9/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="244" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.NETAJAXUntimerattachun_11EA9/image_thumb.png" width="189" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One trigger is associated with UpdatePanel1. The objective of this trigger is to perform a server asynchronous post back when Timer1 Tick event is raised:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:AsyncPostBackTrigger&lt;/span&gt; &lt;span class="attr"&gt;ControlID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Timer1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;EventName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Tick&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;No trigger is associated with UpdatePanel2 but both (UpdatePanel1 and UpdatePanel2) are refreshed when the asynch post back is performed.&lt;/p&gt;

&lt;p&gt;By default, the &lt;em&gt;UpdateMode&lt;/em&gt; property in each UpdatePanel is set to &lt;em&gt;Always&lt;/em&gt;. As soon as a UpdatePanel post back is performed, all the UpdatePanel are refreshed.&lt;/p&gt;

&lt;p&gt;If you want to control how UpdatePanel are refreshed, you have to set the &lt;em&gt;UpdateMode&lt;/em&gt; property to &lt;em&gt;Conditional&lt;/em&gt;. So only triggers that are mapped with the UpdatePanel will refresh the content of this UpdatePanel.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot; &lt;strong&gt;UpdateMode=&amp;quot;Conditional&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:AsyncPostBackTrigger&lt;/span&gt; &lt;span class="attr"&gt;ControlID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Timer1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;EventName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Tick&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=189" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ASP.NET AJAX 1.0: When “Sys is undefined” happens and how to correct it?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/26/asp-net-ajax-1-0-when-sys-is-undefined-happens-and-how-to-correct-it.aspx</link><pubDate>Fri, 26 Dec 2008 21:57:35 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:188</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It is not a new problem but as someone asked me how to correct it, I decided to write the solution.&lt;/p&gt;  &lt;p&gt;After the installation of ASP.NET AJAX 1.0 Extensions on a machine with Visual Studio 2008, we could think that we will find a ASP.NET AJAX Enabled Web Application template but it is not the case as you can see on the following picture:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="264" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_thumb.png" width="634" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As we do not have any other choice, we have to select the ASP.NET Web Application. In the toolbox, we can see some the basic components from ASP.NET AJAX Extensions. Great!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="228" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_thumb_1.png" width="205" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It is really easy to use them with a simple drag and drop from the toolbox to the web page designer.&lt;/p&gt;  &lt;p&gt;As soon as we dragged the first component, some changes are persisted to web.config file (the easier way to see this is to have the web.config oprened in Visual Studio during the operation, you will be notified about changes):&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Extensions, Version=1.0.61025.0, &lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;So we can think that everything is already as Visual Studio did everything thing for us. When the page is run, &lt;em&gt;Sys is undefined&lt;/em&gt; error message appears in the browser.&lt;/p&gt;

&lt;p&gt;Why this? The answer is quite simple. In the HTML page source, we can find:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/ScriptResource.axd?d=xyz&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/ScriptResource.axd?d=abc&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;If we can and paste the url, we can have a look to the file content. But this url does not exist. In fact, the server does not know what to do with the .axd extension that is why we have to add the following content in the web.config between&amp;#160; &lt;em&gt;&amp;lt;system.web&amp;gt;&lt;/em&gt; and &lt;em&gt;&amp;lt;/system.web&amp;gt;&lt;/em&gt;:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;verb&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GET&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ScriptResource.axd&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Handlers.ScriptResourceHandler&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;validate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Now, you can develop applications using AJAX and the only limit is your imagination.&lt;/p&gt;

&lt;p&gt;Minimal web.config:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;verb&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GET&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ScriptResource.axd&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Handlers.ScriptResourceHandler&amp;quot;&lt;/span&gt; 
&lt;span class="attr"&gt;validate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;compilation&lt;/span&gt; &lt;span class="attr"&gt;debug&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;compilation&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authentication&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You can find a complete web.config file by accessing the following path: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025&lt;/em&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=188" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>SharePoint: Slow uploads with IE6? Why?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/26/sharepoint-slow-uploads-with-ie6-why.aspx</link><pubDate>Fri, 26 Dec 2008 21:32:28 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:187</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When you upload some files through the web interface, the upload take a lot of time but uploading these files using WebDAV (through the explorer view) is quicker.&lt;/p&gt;  &lt;p&gt;If you have Internet Explorer on the &lt;em&gt;slow&lt;/em&gt; machines, you have found the issue source! If it is not the case, you could also read the following sentences as it could be a interesting point.&lt;/p&gt;  &lt;p&gt;The reason is simple: Internet Explorer 6 reads information from a registry key that contains the buffer size used for sending files. The default size is too small when sending file bigger than 2Mb to server. After a few seconds, the upload seems to stop (you can check this by having a look to the network monitor &amp;quot;Total Bytes/sec&amp;quot;) and timeout is thrown.&lt;/p&gt;  &lt;p&gt;This issue does not happen with Internet Explorer 7 as the default value for the registry key has been changed.&lt;/p&gt;  &lt;p&gt;You will find the procedure for setting the key value here: &lt;a title="http://support.microsoft.com/kb/329781/en-us" href="http://support.microsoft.com/kb/329781/en-us"&gt;http://support.microsoft.com/kb/329781/en-us&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=187" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category></item><item><title>IE Dev Toolbar does not work. How to correct this?</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/26/ie-dev-toolbar-does-not-work-how-to-correct-this.aspx</link><pubDate>Fri, 26 Dec 2008 21:14:29 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:186</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Most part of the time, developers use virtual machines with a Windows Server 2003 host operating system and Internet Explorer which is installed with the O.S.&lt;/p&gt;  &lt;p&gt;IE Dev Toolbar extension can be really useful when manipulating the web page DOM (it is more useful when used with Visual Studio 2008 JavaScript debugger). But as soon as the extension is installed, we restart Internet Explorer and then… Big surprise: Nothing is displayed in the toolbar window.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="211" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_thumb_1.png" width="222" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;By default, the extension is not allowed to access web page content as the Internet access is not recommended from a server. So, options are set to fit this advice.&lt;/p&gt;  &lt;p&gt;If you want to allow access to the web page from IE Dev Toolbar, you have to edit Internet Explorer options. Check &amp;quot;Enable third-party browser extensions&amp;quot; option&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="170" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Restart Internet Explorer and now you can use the extension&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="172" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/IEDevToolbarnefonctionnepasquefaire_7652/image_thumb_2.png" width="239" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When using client Operating System (Windows XP, Windows Vista, ...) you do not have to these operations this option is already checked.&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=186" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Web+Browsers/default.aspx">Web Browsers</category></item><item><title>SharePoint: Get the item size</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/12/26/sharepoint-get-the-item-size.aspx</link><pubDate>Fri, 26 Dec 2008 20:51:56 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:185</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We can create and use two functions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;GetAttachmentsTotalSize&lt;/strong&gt;: get the size of the item attachments; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;GetItemSize&lt;/strong&gt;: get the size of the item attachments added to size of the content. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;GetAttachmentsTotalSize&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetAttachmentsTotalSize(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; item &lt;span class="kwrd"&gt;as&lt;/span&gt; SPListItem) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; size &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0

        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; filename &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; item.Attachments
            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; file &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = item.Web.GetFileAsString( _ 
                item.Attachments.UrlPrefix + filename)
            size = size + file.Length
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; size
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;GetItemSize&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetItemSize(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; item &lt;span class="kwrd"&gt;as&lt;/span&gt; SPListItem) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; size &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = GetAttachmentsTotalSize()

        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; field &lt;span class="kwrd"&gt;As&lt;/span&gt; SPField &lt;span class="kwrd"&gt;In&lt;/span&gt; item.Fields
            &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; (item(field.Id) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                size = size + item(field.Id).ToString().Length
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; size
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;

&lt;p&gt;You can use these functions in Workflows, Event Handlers and so on.&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=185" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Windows Live Messenger 2009 en version finale</title><link>http://didierdanse.net/blogs/liens/archive/2008/12/21/windows-live-messenger-2009-en-version-finale.aspx</link><pubDate>Sun, 21 Dec 2008 20:03:10 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:184</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;En beta depuis le mois de septembre, Windows Live Messenger (et les autres outils gratuits Windows Live) vient de passer un cap important comme en atteste la capture d’écran suivante:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/liens/image_34F28177.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="432" alt="image" src="http://didierdanse.net/blogs/liens/image_thumb_281ABC0A.png" width="451" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;L’interface de Windows Live Writer se voit légèrement modifiée:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/liens/image_20946DFF.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="533" alt="image" src="http://didierdanse.net/blogs/liens/image_thumb_0D9A7D59.png" width="552" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Plus d’infos sur: &lt;a title="http://www.windowslive.fr/2009/" href="http://www.windowslive.fr/2009/"&gt;http://www.windowslive.fr/2009/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Téléchargement: &lt;a title="http://download.live.com/" href="http://download.live.com/"&gt;http://download.live.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notez qu’à la date du 21 décembre, le site regorge du mot “beta” or, lors d’un “A propos de”, le terme beta est bel et bien absent.&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=184" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/liens/archive/tags/Tout+Public/default.aspx">Tout Public</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/Windows+Live/default.aspx">Windows Live</category></item><item><title>SharePoint: Spécifier l'utilisateur utilisé dans l'historique d'un workflow</title><link>http://didierdanse.net/blogs/dev/archive/2008/12/04/sharepoint-sp-233-cifier-l-utilisateur-utilis-233-dans-l-historique-d-un-workflow.aspx</link><pubDate>Thu, 04 Dec 2008 21:12:13 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:176</guid><dc:creator>Didier Danse</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Cette question m&amp;#39;est revenue plusieurs fois déjà. Ainsi, je prends quelques minutes pour mettre la réponse par écrit.&lt;/p&gt; &lt;p&gt;Dans l&amp;#39;historique d&amp;#39;un workflow, vous retrouvez des valeurs &amp;quot;System Account&amp;quot; à chaque ligne. &lt;/p&gt; &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/workflow_userid_ko_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="150" alt="workflow_userid_ko" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/workflow_userid_ko_thumb.jpg" width="553" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Cette information est ainsi peu utile et il serait bien plus intéressant d&amp;#39;indiquer l&amp;#39;utilisateur qui a provoqué une action de laquelle résulte l&amp;#39;élément présent dans l&amp;#39;historique. &lt;/p&gt; &lt;p&gt;Pour cela, voici rapidement la procédure:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dans le code de votre workflow, si vous n&amp;#39;avez pas suivi l&amp;#39;un des différents articles du net, rajoutez la première ligne (afin de récupérer l&amp;#39;élément courant) du code ci-dessous en global ainsi que la seconde ligne (qui serait la variable dans laquelle on stocke l&amp;#39;ID du user courant de type entier) dans tous les cas:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;VB:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; workflowProperties &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties ()
&lt;span class="kwrd"&gt;Public&lt;/span&gt; CurrentUserId &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = -1&lt;/pre&gt;
&lt;p&gt;C#:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties workflowProperties = 
      &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties ();
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CurrentUserId = -1;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Si ce n&amp;#39;est déjà fait, ajoutez une activité &lt;em&gt;Code&lt;/em&gt; avant l&amp;#39;activité &lt;em&gt;LogToHistoryListActivity&lt;/em&gt;. Dans cette activité, ajoutez les lignes suivantes qui permettent de récupérer l&amp;#39;ID de l&amp;#39;utilisateur au sein de SharePoint:&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;VB:&lt;/p&gt;&lt;pre class="csharpcode"&gt;CurrentUserId = workflowProperties.Item(&lt;span class="str"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;).ToString().Substring( _
       0, workflowProperties.Item(&lt;span class="str"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;).ToString().IndexOf(&lt;span class="str"&gt;&amp;quot;;#&amp;quot;&lt;/span&gt;))&lt;/pre&gt;
&lt;p&gt;C#:&lt;/p&gt;&lt;pre class="csharpcode"&gt;CurrentUserId = workflowProperties.Item(&lt;span class="str"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;).ToString().Substring(
       0, workflowProperties.Item(&lt;span class="str"&gt;&amp;quot;Editor&amp;quot;&lt;/span&gt;).ToString().IndexOf(&lt;span class="str"&gt;&amp;quot;;#&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les activités d&amp;#39;un Workflow sont constituées d&amp;#39;un ensemble de propriétés qu&amp;#39;il est possible (voire nécessaire) de spécifier. C&amp;#39;est également le cas pour la &lt;em&gt;LogToHistoryListActivity. &lt;/em&gt;Au delà des propriétés explicites telles que &lt;em&gt;HistoryDescription&lt;/em&gt; que vous avez certainement déjà remplis (sans quoi, il serait dur d&amp;#39;avoir des logs...), il existe la propriété &lt;em&gt;UserId&lt;/em&gt;. C&amp;#39;est cette propriété qui indique l&amp;#39;utilisateur à afficher dans l&amp;#39;historique. Elle requiert une valeur entière qui correspond à ... vous l&amp;#39;aurez compris, la valeur que nous avons récupéré dans le point précédent. Ainsi, il ne reste plus qu&amp;#39;à cliquer sur le bouton &amp;quot;...&amp;quot; et de sélectionner la variable :&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="211" alt="userid_1" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/userid_1_thumb.jpg" width="318" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/userid_2_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="413" alt="userid_2" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/userid_2_thumb.jpg" width="513" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/userid_3_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="247" alt="userid_3" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/userid_3_thumb.jpg" width="320" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dernière étape: déployez votre workflow et vérifiez! Désormais l&amp;#39;utilisateur affiché est bien le bon&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/workflow_userid_ok_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="108" alt="workflow_userid_ok" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/3e7db49e9cae_BE9B/workflow_userid_ok_thumb.jpg" width="553" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=176" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/.NET/default.aspx">.NET</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Workflow/default.aspx">Workflow</category></item><item><title>Le Service Pack 2 de Vista en beta, c'est pour cette semaine!</title><link>http://didierdanse.net/blogs/dev/archive/2008/12/01/le-service-pack-2-de-vista-en-beta-c-est-pour-cette-semaine.aspx</link><pubDate>Mon, 01 Dec 2008 19:39:00 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:175</guid><dc:creator>Didier Danse</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Alors qu&amp;#39;il y a un an presque jour pour jour je vous annonçais la venue du SP1 de Vista, voici désormais le SP2 en beta!&lt;/p&gt;
&lt;p&gt;Comme pour son prédécesseur, il corrige certes quelques bugs, failles de sécurité et autres incohérences qui persisteraient après le SP1 mais il ajoute de nouvelles fonctionnalités / possibilités. &lt;/p&gt;
&lt;p&gt;Pour le télécharger, il vous faudra attendre le:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 décembre pour les abonnés MSDN et Technet;&lt;/li&gt;
&lt;li&gt;4 décembre en téléchargement publique sur MSDN et Technet.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Les nouveautés les plus importantes de ce Service Pack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support de types d&amp;#39;hardware émergeants:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Support du Bluethoot 2.1;&lt;/li&gt;
&lt;li&gt;Possibilité d&amp;#39;enregistrer des données sur des supports Blue-Ray;&lt;/li&gt;
&lt;li&gt;...;&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Amélioration de l&amp;#39;administration;&lt;/li&gt;
&lt;li&gt;Amélioration des performances:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Windows Search 4 qui améliore les performances d&amp;#39;indexation et améliore la qualité des résultats;&lt;/li&gt;
&lt;li&gt;Diminution des ressources nécessaires pour les gadgets de la toolbar;&lt;/li&gt;
&lt;li&gt;Hyper-V.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;Des améliorations concernant la compatibilité entre des logiciels tels que ZoneAlarm et Vista sont présentes. Par ailleurs, Microsoft annonce que toute application qu&amp;#39;il n&amp;#39;y aura pas de régression de la compatibilité lors du passage au SP2 (heureusement ceci dit...).&lt;/p&gt;
&lt;p&gt;On notera aussi qu&amp;#39;un outil pour nettoyer les fichiers devenus obsolètes après l&amp;#39;installation du SP2 est fourni. &lt;/p&gt;
&lt;p&gt;N&amp;#39;hésitez pas à poster vos feedbacks à ce sujet et n&amp;#39;oubliez pas, il s&amp;#39;agit d&amp;#39;une version beta, il n&amp;#39;est pas conseillé de l&amp;#39;installation pour une installation en &amp;quot;production&amp;quot;.&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=175" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Vista/default.aspx">Vista</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Windows+Server/default.aspx">Windows Server</category></item><item><title>SharePoint: des uploads lents avec IE6? Pourquoi?</title><link>http://didierdanse.net/blogs/dev/archive/2008/11/30/sharepoint-des-uploads-lents-avec-ie6-pourquoi.aspx</link><pubDate>Sun, 30 Nov 2008 12:37:17 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:174</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Alors que l&amp;#39;envoi de fichier via WebDAV (c&amp;#39;est-&amp;#224;-dire &amp;#224; l&amp;#39;aide de la vue Explorateur) se passe efficacement, l&amp;#39;envoi de fichiers via l&amp;#39;interface web dans SharePoint s&amp;#39;av&amp;#232;re tr&amp;#232;s lent?&lt;/p&gt;  &lt;p&gt;Si vous disposez d&amp;#39;Internet Explorer 6 sur les pcs depuis lesquels l&amp;#39;upload est lent, ne cherchez plus le pourquoi! Si ce n&amp;#39;est pas le cas, il s&amp;#39;agit juste d&amp;#39;une piste &amp;#224; suivre.&lt;/p&gt;  &lt;p&gt;La cause est simple: Internet Explorer 6 utilise une cl&amp;#233; de registre qui indique la taille du buffer &amp;#224; utiliser pour l&amp;#39;envoi des fichiers. La taille par d&amp;#233;faut pose probl&amp;#232;me d&amp;#232;s lors que vous faites l&amp;#39;upload d&amp;#39;un fichier de plus de 2Mo. Apr&amp;#232;s quelques secondes, l&amp;#39;upload semble s&amp;#39;arr&amp;#234;ter (et pour preuve, vous pouvez monitorer la charge r&amp;#233;seau au travers de l&amp;#39;information &amp;quot;Total Bytes/sec&amp;quot;) et un timeout intervient d&amp;#232;s lors.&lt;/p&gt;  &lt;p&gt;Internet Explorer 7 ne souffre pas de ce param&amp;#232;tre puisque la valeur de la cl&amp;#233; s&amp;#39;est vue modifi&amp;#233;e.&lt;/p&gt;  &lt;p&gt;Vous trouverez la proc&amp;#233;dure pour mettre &amp;#224; jour le param&amp;#232;tre: &lt;a title="http://support.microsoft.com/kb/329781/en-us" href="http://support.microsoft.com/kb/329781/en-us"&gt;http://support.microsoft.com/kb/329781/en-us&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=174" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category></item><item><title>SharePoint: Récupérer la taille d'un Item</title><link>http://didierdanse.net/blogs/dev/archive/2008/11/23/sharepoint-r-233-cup-233-rer-la-taille-d-un-item.aspx</link><pubDate>Sun, 23 Nov 2008 13:18:03 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:172</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;On fera le calcul en utilisant deux fonctions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;GetAttachmentsTotalSize&lt;/strong&gt;: renvoie la taille totale occup&amp;#233;e par les fichiers attach&amp;#233;s &amp;#224; l&amp;#39;item;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;GetItemSize&lt;/strong&gt;: renvoie la taille total des fichiers attach&amp;#233;s &amp;#224; laquelle on y ajoute la taille du contenu inclus dans les diff&amp;#233;rents champs.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;GetAttachmentsTotalSize&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetAttachmentsTotalSize(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; item &lt;span class="kwrd"&gt;as&lt;/span&gt; SPListItem) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; size &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0

        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; filename &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; item.Attachments
            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; file &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = item.Web.GetFileAsString( _ 
                item.Attachments.UrlPrefix + filename)
            size = size + file.Length
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; size
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;GetItemSize&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetItemSize(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; item &lt;span class="kwrd"&gt;as&lt;/span&gt; SPListItem) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; size &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = GetAttachmentsTotalSize()

        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; field &lt;span class="kwrd"&gt;As&lt;/span&gt; SPField &lt;span class="kwrd"&gt;In&lt;/span&gt; item.Fields
            &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; (item(field.Id) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                size = size + item(field.Id).ToString().Length
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;Next&lt;/span&gt;

        &lt;span class="kwrd"&gt;Return&lt;/span&gt; size
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Bon calcul!&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=172" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category></item><item><title>Patterns &amp; practices Application Architecture Guide 2.0</title><link>http://didierdanse.net/blogs/liens/archive/2008/11/20/patterns-amp-practices-application-architecture-guide-2-0.aspx</link><pubDate>Thu, 20 Nov 2008 20:51:37 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:169</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;b&gt;patterns &amp;amp; practices Application Architecture Guide 2.0&lt;/b&gt; project site! provides design-level guidance for the architecture and design of applications built on the .NET Framework. It focuses on the most common types of applications, partitioning application functionality into layers, components, and services, and walks through their key design characteristics.This guide is a collaborative effort between patterns &amp;amp; practices, product teams, and industry experts.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/AppArchGuide" href="http://www.codeplex.com/AppArchGuide"&gt;http://www.codeplex.com/AppArchGuide&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=169" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/liens/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/.NET/default.aspx">.NET</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/WPF/default.aspx">WPF</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/Office/default.aspx">Office</category><category domain="http://didierdanse.net/blogs/liens/archive/tags/OBA/default.aspx">OBA</category></item><item><title>SharePoint: Be aware of group filtering in people field with moving sites using Content Migration API</title><link>http://didierdanse.net/blogs/dev_en/archive/2008/10/20/sharepoint-be-aware-of-group-filtering-in-people-field-with-moving-sites-using-content-migration-api.aspx</link><pubDate>Mon, 20 Oct 2008 20:22:13 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:161</guid><dc:creator>Didier Danse</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;em&gt;[&lt;a href="http://didierdanse.net/blogs/dev/archive/2008/10/20/sharepoint-attention-aux-champs-users-apr-232-s-une-migration-avec-la-content-migration-api.aspx"&gt;Version fran&amp;#231;aise&lt;/a&gt;]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you use a field &lt;em&gt;user&lt;/em&gt; in your lists which is filtered by using SharePoint group filtering and you intend to move your application from one environment to another through the content migration API, this post is for you! &lt;/p&gt;  &lt;p&gt;First, a quick reminder on how to filter the users on the basis of a group: &lt;/p&gt;  &lt;p&gt;In the definition of the list, click the name of the &lt;em&gt;User&lt;/em&gt; column. Then, in the Properties window, just select the group used to filter users.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/02_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="90" alt="02" src="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/02_thumb.jpg" width="317" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;What happened internally? The identifier of the selected group is stored in a property of the field. This is SPFieldUser.SelectionGroup property that receives and returns an integer as MSDN describe it: &lt;a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;This identifier (424 in our example) is in the URL when you change the group members:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/01_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="155" alt="01" src="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/01_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;At this time, there is no problem. &lt;/p&gt;  &lt;p&gt;A problem can occur when, using the content migration through API STSADM (STSADM - o export) or a custom tool (SP RAD Studio for example) , we export this site and then import it to another environment. Surprise! It turns out that the selected group for the filter does not match what we expected. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/03_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="155" alt="03" src="http://didierdanse.net/blogs/dev_en/WindowsLiveWriter/SharePointContentMigrationAPI_13EF2/03_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What has happened? The answer is simple. Only a identifier as an integer is used as we have seen. Looking at the package generated by an operation export, one might think that the import will no problem since found in the file Usergroup. xml as we found this information: &lt;em&gt;&amp;lt;Group Id=&amp;quot;424&amp;quot; Name=&amp;quot;GroupName&amp;quot; [...]&amp;gt;&lt;/em&gt; &lt;strong&gt;but it is not the case.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It will be necessary to manually edit this filter after migration. To do this, just use the web interface ... if we have the rights. Otherwise, one possible solution is to use STSADM extensions. I use this solution for performing all operations using a single script. &lt;/p&gt;  &lt;p&gt;This operation takes parameter the name of a SharePoint group (not an ID as we didnot know it):&lt;/p&gt; &lt;em&gt;stsadm -o setfieldproperties -url &amp;lt;SiteUrl&amp;gt; -list &amp;lt;Listname&amp;gt; -field &amp;lt;Fieldname&amp;gt; -userfieldgroupfilter &amp;lt;GroupName&amp;gt;&lt;/em&gt;   &lt;p&gt;This extension is part of the extensions migration extensions available on CodePlex (&lt;a href="http://www.codeplex.com/migrationstsadmext"&gt;http://www.codeplex.com/migrationstsadmext&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=161" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/STSADM/default.aspx">STSADM</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://didierdanse.net/blogs/dev_en/archive/tags/Content+Migration+API/default.aspx">Content Migration API</category></item><item><title>SharePoint: Attention aux champs users après une migration avec la Content Migration API</title><link>http://didierdanse.net/blogs/dev/archive/2008/10/20/sharepoint-attention-aux-champs-users-apr-232-s-une-migration-avec-la-content-migration-api.aspx</link><pubDate>Mon, 20 Oct 2008 19:54:23 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:159</guid><dc:creator>Didier Danse</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;em&gt;[&lt;a href="http://didierdanse.net/blogs/dev_en/archive/2008/10/20/sharepoint-be-aware-of-group-filtering-in-people-field-with-moving-sites-using-content-migration-api.aspx"&gt;English version&lt;/a&gt;]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Si dans vos listes vous utilisez un champ &lt;em&gt;user&lt;/em&gt; qui filtre les utilisateurs possibles sur base d&amp;#39;un groupe SharePoint et que vous avez l&amp;#39;intention de migrer votre application d&amp;#39;un environnement &amp;#224; un autre via la Content Migration API, ce post est pour vous!&lt;/p&gt;  &lt;p&gt;Tout d&amp;#39;abord, un rapide rappel sur la mani&amp;#232;re de filtrer les users sur base d&amp;#39;un groupe:&lt;/p&gt;  &lt;p&gt;Dans la d&amp;#233;finition de la liste, cliquez sur le nom de la colonne &lt;em&gt;user&lt;/em&gt;. Une fois dans la fen&amp;#234;tre de propri&amp;#233;t&amp;#233;s, il suffit de s&amp;#233;lectionner le groupe utilis&amp;#233; pour filtrer les users.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/02_thumb%5B1%5D_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="94" alt="02_thumb[1]" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/02_thumb%5B1%5D_thumb.jpg" width="321" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Comment cela se passe-t-il en interne? L&amp;#39;identifiant du groupe s&amp;#233;lectionn&amp;#233; est stock&amp;#233; dans une propri&amp;#233;t&amp;#233; du champ. Il s&amp;#39;agit de SPFieldUser.SelectionGroup qui re&amp;#231;oit et renvoie un entier comme en atteste MSDN: &lt;a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduser.selectiongroup.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Cet identifiant (424 dans notre exemple) est celui pr&amp;#233;sent dans l&amp;#39;url lorsque vous modifiez les membres du groupe.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/01_thumb%5B2%5D_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="158" alt="01_thumb[2]" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/01_thumb%5B2%5D_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jusque l&amp;#224;, pas de probl&amp;#232;me. &lt;/p&gt;  &lt;p&gt;L&amp;#224; o&amp;#249; peut survenir un probl&amp;#232;me, c&amp;#39;est lorsque, via STSADM (stsadm -o export) ou un outil (SP RAD Studio par exemple) utilisant la Content Migration API, nous exportons ce site et ensuite l&amp;#39;importons dans un autre environnement. Et l&amp;#224;, surprise! Il s&amp;#39;av&amp;#232;re que le groupe s&amp;#233;lectionn&amp;#233; pour le filtre ne correspond pas &amp;#224; ce que nous attendions. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/03_thumb%5B12%5D_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="158" alt="03_thumb[12]" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/SharePointAttentionauxchampsusersaprsune_13B4E/03_thumb%5B12%5D_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Que s&amp;#39;est-il pass&amp;#233;? La r&amp;#233;ponse est simple. Seul un identifiant sous forme d&amp;#39;entier est utilis&amp;#233; comme nous l&amp;#39;avons vu. En regardant le package g&amp;#233;n&amp;#233;r&amp;#233; par une op&amp;#233;ration d&amp;#39;export, on pourrait penser que l&amp;#39;import ne posera aucun probl&amp;#232;me puisque l&amp;#39;on retrouve&amp;#160; &lt;em&gt;&amp;lt;Group Id=&amp;quot;424&amp;quot; Name=&amp;quot;GroupName&amp;quot; [...]&amp;gt;&lt;/em&gt; dans le fichier &lt;em&gt;UserGroup.xml&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Cependant, lors de l&amp;#39;import, pour peu que l&amp;#39;identifiant soit d&amp;#233;j&amp;#224; utilis&amp;#233;, le groupe import&amp;#233; recevra un nouvel ID. Malheureusement, l&amp;#39;ID utilis&amp;#233; par le champ user n&amp;#39;est quant &amp;#224; lui pas modifi&amp;#233;. Et c&amp;#39;est ainsi que l&amp;#39;on se retrouve avec un filtre sur un groupe non souhait&amp;#233;!&lt;/p&gt;  &lt;p&gt;Ainsi, il nous sera n&amp;#233;cessaire de modifier manuellement ce filtre apr&amp;#232;s la migration. Pour cela, il suffit de passer par l&amp;#39;interface web... si nous en avons le droit. Dans le cas contraire, une solution possible est d&amp;#39;utiliser des extensions STSADM. C&amp;#39;est cette solution que j&amp;#39;ai mis en place afin de r&amp;#233;aliser toutes les op&amp;#233;rations d&amp;#39;une traite. &lt;/p&gt;  &lt;p&gt;Cette op&amp;#233;ration prend en param&amp;#232;tre le nom d&amp;#39;un groupe SharePoint (et non pas sans identifiant puisqu&amp;#39;on ne le conna&amp;#238;t pas &amp;#224; l&amp;#39;avance dans notre sc&amp;#233;nario). &lt;/p&gt;  &lt;p&gt;&lt;em&gt;stsadm -o setfieldproperties -url &amp;lt;SiteUrl&amp;gt; -list &amp;lt;Listname&amp;gt; -field &amp;lt;Fieldname&amp;gt; -userfieldgroupfilter &amp;lt;GroupName&amp;gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Cette extension fait partie des extensions &lt;em&gt;Migration extensions&lt;/em&gt; pr&amp;#233;sentes sur CodePlex (&lt;a href="http://www.codeplex.com/migrationstsadmext"&gt;http://www.codeplex.com/migrationstsadmext&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=159" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/STSADM/default.aspx">STSADM</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Content+Migration+API/default.aspx">Content Migration API</category></item><item><title>Roadshow MSDN: Comment Silverlight 2 et WPF peuvent procurer de riches expériences client aux utilisateurs - Liège, 15 Octobre</title><link>http://didierdanse.net/blogs/dev/archive/2008/09/30/roadshow-msdn-comment-silverlight-2-et-wpf-peuvent-procurer-de-riches-exp-233-riences-client-aux-utilisateurs-li-232-ge-15-octobre.aspx</link><pubDate>Tue, 30 Sep 2008 18:38:00 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:157</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Des sessions techniques dans la r&amp;#233;gion li&amp;#233;geoise, cela est suffisamment rare pour &amp;#234;tre signal&amp;#233;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Aujourd&amp;#8217;***, les d&amp;#233;veloppeurs qui construisent de nouvelles applications veillent tout particuli&amp;#232;rement &amp;#224; ce qu&amp;#8217;elles procurent une riche exp&amp;#233;rience client aux utilisateurs. En effet, ceux-ci sont de plus en plus familiaris&amp;#233;s avec des applications (web) capables de r&amp;#233;agir de fa&amp;#231;on logique et d&amp;#8217;interagir d&amp;#8217;avantage avec eux en tenant compte de leurs actions.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;u&gt;Rejoignez-nous&lt;/u&gt; au RIA Roadshow et restez &amp;#224; l&amp;#39;&amp;#233;coute des derni&amp;#232;res innovations. Vous y apprendrez comment d&amp;#233;velopper de riches applications pouvant &amp;#234;tre d&amp;#233;ploy&amp;#233;es sur le web et au-del&amp;#224; de ce que vous pouvez habituellement faire avec une application bas&amp;#233;e sur un navigateur&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Cette session abordera 4 sujets principaux: &lt;/em&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;em&gt;Les nouvelles fonctionnalit&amp;#233;s de ASP.NET AJAX&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;Comment utiliser les Windows Live Tools for Visual Studio&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;Comment construire une application Silverlight 2 qui fait appel aux services &amp;#224; distance, &amp;#224; l&amp;#8217;inter-liaison des donn&amp;#233;es (data binding), &amp;#224; la cr&amp;#233;ation de gabarits et styles (templating &amp;amp; styling) et cela, aussi bien avec Visual Studio 2008 qu&amp;#8217;avec Expression Blend 2.5&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;&lt;em&gt;Windows Presentation Foundation et le .NET Client Profile&lt;/em&gt;&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Inscriptions: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032390486&amp;amp;%3bCulture=fr-BE" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032390486&amp;amp;%3bCulture=fr-BE"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032390486&amp;amp;%3bCulture=fr-BE&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=157" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Web+browsers/default.aspx">Web browsers</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/.NET/default.aspx">.NET</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/WPF/default.aspx">WPF</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>SharePoint: Les liens de la semaine 36 (01-07 septembre 2008)</title><link>http://didierdanse.net/blogs/liens/archive/2008/09/07/sharepoint-les-liens-de-la-semaine-36-01-07-septembre-2008.aspx</link><pubDate>Sun, 07 Sep 2008 14:01:17 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:153</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Parce qu&amp;#39;il n&amp;#39;est pas possible d&amp;#39;&amp;#233;crire sur tous les sujets et que d&amp;#39;autres le font tr&amp;#232;s bien, voici une s&amp;#233;lection de lectures parues cette semaine...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Leveraging the SharePoint Platform - Part 2: What capabilities to start with&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This the second post of a six part series on Leveraging the SharePoint Platform. In the &lt;/em&gt;&lt;a href="http://sharepointmagazine.net/technical/development/leveraging-the-sharepoint-platform-part-1"&gt;&lt;em&gt;first post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; I introduced at a high level the Capabilities, the Editions, the Infrastructure and the API of the SharePoint Platform. In this post I will give my own opinion on what capabilities to start with and what ones to use Open Source/Partner Solutions with or to wait for SharePoint 2009.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://sharepointmagazine.net/news/analysis/leveraging-the-sharepoint-platform-part-2" href="http://sharepointmagazine.net/news/analysis/leveraging-the-sharepoint-platform-part-2"&gt;http://sharepointmagazine.net/news/analysis/leveraging-the-sharepoint-platform-part-2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Developer Tools in Internet Explorer 8 Beta 2&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/ie/archive/2008/09/03/developer-tools-in-internet-explorer-8-beta-2.aspx" href="http://blogs.msdn.com/ie/archive/2008/09/03/developer-tools-in-internet-explorer-8-beta-2.aspx"&gt;http://blogs.msdn.com/ie/archive/2008/09/03/developer-tools-in-internet-explorer-8-beta-2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Content Deployment Problems with MOSS and IIS 7&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The preconfigured maximum size of the cab files generated by content deployment is 10 MB as discussed in this &lt;/em&gt;&lt;a href="http://blogs.technet.com/stefan_gossner/archive/2008/05/28/pimp-my-content-deployment-job.aspx"&gt;&lt;strong&gt;&lt;em&gt;article&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;em&gt;. IIS 7 on the other hand has a preconfigured upload limit of 29 MB as discussed in KB article &lt;/em&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;925083"&gt;&lt;strong&gt;&lt;em&gt;925083&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;So with these two limits (maximum size of a cab file = 10 MB and maximum upload size in IIS 7 = 29 MB) we would not expect any problems. But...&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/stefan_gossner/archive/2008/09/03/content-deployment-problems-with-moss-and-iis-7.aspx" href="http://blogs.technet.com/stefan_gossner/archive/2008/09/03/content-deployment-problems-with-moss-and-iis-7.aspx"&gt;http://blogs.technet.com/stefan_gossner/archive/2008/09/03/content-deployment-problems-with-moss-and-iis-7.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint : Test de Chrome avec SharePoint 2007 (MOSS et WSS)&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Comme nous le savons depuis hier, &lt;/em&gt;&lt;a href="http://blogs.developpeur.org/search/SearchResults.aspx?q=chrome&amp;amp;a=1"&gt;&lt;em&gt;Google vient de sortir son navigateur WEB&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Celui-ci est un mix de ce qui se fait dans les principaux navigateurs (Internet Explorer, FireFox ou Opera).&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;J&amp;#8217;ai donc voulu test&amp;#233; (ou plut&amp;#244;t confirmer) le fonctionnement de Chrome avec SharePoint 2007 au travers des versions de SharePoint disponibles (MOSS et WSS V3).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://blogs.codes-sources.com/fabrice69/archive/2008/09/03/sharepoint-test-de-chrome-avec-sharepoint-2007-moss-et-wss.aspx" href="http://blogs.codes-sources.com/fabrice69/archive/2008/09/03/sharepoint-test-de-chrome-avec-sharepoint-2007-moss-et-wss.aspx"&gt;http://blogs.codes-sources.com/fabrice69/archive/2008/09/03/sharepoint-test-de-chrome-avec-sharepoint-2007-moss-et-wss.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[Best Practices] Customisation du My Site : Comment le modifier en amont et en aval&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Le &amp;quot;My Site&amp;quot; est clairement une fonction incontournable de SharePoint 2007 lorsqu&amp;#39;il s&amp;#39;agit de g&amp;#233;rer la notion de personnalisation et de r&amp;#233;seau social.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Tout simplement, un &amp;quot;Must have&amp;quot;.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://blogs.codes-sources.com/themit/archive/2008/09/05/best-practices-customisation-du-my-site-comment-le-modifier-en-amont-et-en-aval.aspx" href="http://blogs.codes-sources.com/themit/archive/2008/09/05/best-practices-customisation-du-my-site-comment-le-modifier-en-amont-et-en-aval.aspx"&gt;http://blogs.codes-sources.com/themit/archive/2008/09/05/best-practices-customisation-du-my-site-comment-le-modifier-en-amont-et-en-aval.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=153" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/liens/archive/tags/Sharepoint/default.aspx">Sharepoint</category></item><item><title>TechDays '08 à Luxembourg: 30 septembre 2008 à Mondorf-les-Bains, Luxembourg et c'est gratuit!</title><link>http://didierdanse.net/blogs/dev/archive/2008/09/06/techdays-08-224-luxembourg-30-septembre-2008-224-mondorf-les-bains-luxembourg-et-c-est-gratuit.aspx</link><pubDate>Sat, 06 Sep 2008 11:20:00 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:152</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;C&amp;#39;est au tour du Luxembourg d&amp;#39;héberger les TechDays &amp;#39;08. Avec 6 sessions pour les développeurs et 3 orientées IT Pro, ces TechDays ont pour but d&amp;#39;avoir un large aperçu des nouveautés de .NET et du Service Pack associé ainsi que sur la virtualisation, un des sujets de discussion les plus en vogue actuellement.&lt;/p&gt;
&lt;p&gt;C&amp;#39;est gratuit et le nombre de places est limité donc inscrivez-vous au plus vite!&lt;/p&gt;
&lt;p&gt;Agenda complet: &lt;a title="http://www.microsoft.com/belux/techdays08/agenda.aspx" href="http://www.microsoft.com/belux/techdays08/agenda.aspx"&gt;http://www.microsoft.com/belux/techdays08/agenda.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Inscription: &lt;a title="http://www.microsoft.com/belux/techdays08/inscrivez.aspx" href="http://www.microsoft.com/belux/techdays08/inscrivez.aspx"&gt;http://www.microsoft.com/belux/techdays08/inscrivez.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=152" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/TechDays/default.aspx">TechDays</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Microsoft+Belux/default.aspx">Microsoft Belux</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Evenement/default.aspx">Evenement</category></item><item><title>ASP.NET AJAX: Tous mes UpdatePanels sont raffraîchis lors d'un retour serveur alors que seul un UpdatePanel ne devrait l'être, pourquoi?</title><link>http://didierdanse.net/blogs/dev/archive/2008/09/02/asp-net-ajax-tous-mes-updatepanels-sont-raffra-238-chis-lors-d-un-retour-serveur-alors-que-seul-un-updatepanel-ne-devrait-l-234-tre-pourquoi.aspx</link><pubDate>Tue, 02 Sep 2008 18:47:32 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:151</guid><dc:creator>Didier Danse</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Dans la continuit&amp;#233; des questions / r&amp;#233;ponses sur ASP.NET AJAX (1.0 ou 3.5, peu importe dans ce cas), voici la r&amp;#233;ponse &amp;#224; une petite question relativement simple mais que tout d&amp;#233;veloppeur d&amp;#233;butant avec ASP.NET AJAX rencontrera certainement.&lt;/p&gt;  &lt;p&gt;Imaginons une page contenant les &amp;#233;l&amp;#233;ments suivants:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Deux update panels; &lt;/li&gt;    &lt;li&gt;Un timer; &lt;/li&gt;    &lt;li&gt;Un bouton et un label dans chacun des update panels. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ceci donne une page de ce type (sans aucun chichi et ne respectant aucunement les conventions de nommage habituelles): &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.NETAJAXUntimerattachun_11EA9/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="244" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.NETAJAXUntimerattachun_11EA9/image_thumb.png" width="189" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Un seul trigger est associ&amp;#233; &amp;#224; l&amp;#39;UpdatePanel1. Celui-ci a pour but de r&amp;#233;aliser un retour serveur asynchrone lorsque Timer1 lance l&amp;#39;&amp;#233;v&amp;#232;nement &lt;em&gt;Tick&lt;/em&gt;, ce qui donne:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:AsyncPostBackTrigger&lt;/span&gt; &lt;span class="attr"&gt;ControlID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Timer1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;EventName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Tick&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Aucun trigger n&amp;#39;est associ&amp;#233; &amp;#224; l&amp;#39;UpdatePanel2 et pourtant, les deux updatepanels sont rafraichis lors de ce fameux retour asynchrone. &lt;/p&gt;

&lt;p&gt;Ceci se justifie par le fait que, &lt;strong&gt;par d&amp;#233;faut, la propri&amp;#233;t&amp;#233; &lt;em&gt;UpdateMode&lt;/em&gt; des objets &lt;em&gt;UpdatePanel&lt;/em&gt; a la valeur &lt;em&gt;Always&lt;/em&gt;&lt;/strong&gt;. Ainsi, quelque soit l&amp;#39;&amp;#233;l&amp;#233;ment qui a effectu&amp;#233; le retour serveur, les &lt;em&gt;UpdatePanel&lt;/em&gt; sont raffra&amp;#238;chis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Afin de mieux contr&amp;#244;ler le rechargement des UpdatePanel, il suffit de mettre la propri&amp;#233;t&amp;#233; &lt;em&gt;UpdateMode&lt;/em&gt; &amp;#224; la valeur &lt;em&gt;Conditional&lt;/em&gt;&lt;/strong&gt;. D&amp;#232;s lors seul les retours serveurs effectu&amp;#233;s et pr&amp;#233;sents dans les triggers auront pour effet de recharger le contenu de notre UpdatePanel.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot; &lt;strong&gt;UpdateMode=&amp;quot;Conditional&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:AsyncPostBackTrigger&lt;/span&gt; &lt;span class="attr"&gt;ControlID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Timer1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;EventName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Tick&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Pour rappel, vous pouvez retrouver une &lt;a title="http://didierdanse.net/files/folders/articles/entry58.aspx" href="http://didierdanse.net/files/folders/articles/entry58.aspx"&gt;Introduction &amp;#224; ASP.NET AJAX&lt;/a&gt; sur ce m&amp;#234;me site. &lt;/p&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=151" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ASP.NET AJAX 1.0: Sys is undefined, pourquoi et comment le corriger?</title><link>http://didierdanse.net/blogs/dev/archive/2008/09/01/asp-net-ajax-1-0-sys-is-undefined-pourquoi-et-comment-le-corriger.aspx</link><pubDate>Mon, 01 Sep 2008 19:19:14 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:148</guid><dc:creator>Didier Danse</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Certes, c&amp;#39;est loin d&amp;#39;être un problème récent mais étant récemment retombé sur le problème, je me décide enfin à écrire la solution... Je sais que cela servira au moins à une personne :-)&lt;/p&gt; &lt;p&gt;Après avoir installé les extensions ASP.NET AJAX 1.0 sur un poste dans le but de réaliser des développements avec Visual Studio 2008, on pourrait s&amp;#39;attendre à trouver le template de projet &amp;quot;ASP.NET AJAX Enabled Web Application&amp;quot;. Il n&amp;#39;en est pourtant rien comme en atteste la capture d&amp;#39;écran suivante:&lt;/p&gt; &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="264" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_thumb.png" width="634" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Puisque nous n&amp;#39;avons guère le choix, choisissons le template ASP.NET Web Application. Rapidement, nous pouvons remarquer que les composants &amp;quot;de base&amp;quot; de ASP.NET AJAX Extensions sont bel et bien présents dans la toolbox. Parfait! &lt;/p&gt; &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="228" alt="image" src="http://didierdanse.net/blogs/dev/WindowsLiveWriter/ASP.0Sysisundefinedpourquoietcommentleco_12143/image_thumb_1.png" width="205" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Il ne nous reste donc plus à les utiliser à l&amp;#39;aide d&amp;#39;un drag and drop, tout ce qu&amp;#39;il y a de plus classique. &lt;/p&gt; &lt;p&gt;Si on observe le web.config (le plus simple étant de garder le web.config ouvert dans Visual Studio, vous serez immédiatement averti des changements), on peut voir que quelques lignes ont été ajoutées dans le web.config:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Extensions, Version=1.0.61025.0, &lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Dès lors, on pourrait se dire que tout va bien et que Visual Studio a fait le travail pour nous. Mais après exécuté la page, l&amp;#39;erreur &lt;em&gt;&amp;#39;Sys&amp;#39; is undefined&lt;/em&gt; apparaît dans le browser.&lt;/p&gt;
&lt;p&gt;Pourquoi? La réponse est simple... On retrouve&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/ScriptResource.axd?d=xyz&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/ScriptResource.axd?d=abc&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;dans la source HTML. Or si on vérifie ce que génére ce fichier, on remarque que celui-ci n&amp;#39;est pas disponible. Cela est dû au fait que le serveur ne sait pas comment interpréter les .axd. C&amp;#39;est pour cela qu&amp;#39;il est nécessaire d&amp;#39;ajouter les lignes suivantes dans le web.config et ce entre &lt;em&gt;&amp;lt;system.web&amp;gt;&lt;/em&gt; et &lt;em&gt;&amp;lt;/system.web&amp;gt;&lt;/em&gt;:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;verb&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GET&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ScriptResource.axd&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Handlers.ScriptResourceHandler&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;validate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Désormais, il ne nous reste plus qu&amp;#39;à laisser exploser notre imagination.&lt;/p&gt;
&lt;p&gt;Le web.config minimal:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;verb&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GET&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ScriptResource.axd&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Handlers.ScriptResourceHandler&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;validate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;httpHandlers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;compilation&lt;/span&gt; &lt;span class="attr"&gt;debug&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;        
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;compilation&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;authentication&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Notez que vous pouvez trouver un web.config complet à l&amp;#39;adresse suivante: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025&lt;/em&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://didierdanse.net/aggbug.aspx?PostID=148" width="1" height="1"&gt;</description><category domain="http://didierdanse.net/blogs/dev/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://didierdanse.net/blogs/dev/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item></channel></rss>