# Tuesday, September 29, 2009

Résoudre le problème : Login failed for user IIS APPPOOL\DefaultAppPool

En voulant exécuter une application web sur mon poste je me suis retrouvé avec cette erreur qui a première vue est habituelle :

image

Erreur classique sauf que dans ce cas l’utilisateur en question n’est pas IIS_WPG comme on le rencontre généralement mais il s’agit curieusement d’un inconnu nommé “IIS APPPOOL\DefaultAppPool”. Et après un petit tour rapide dans la liste des comptes utilisateurs Windows, on se rend vite compte que cet inconnu est très discret puisque introuvable.

Cet utilisateur est lié à une nouveauté importante apparue dans Windows 7 et Windows 2008 R2, et pour le moment principalement utilisée par IIS 7.5. En effet la gestion de l’identité des application pool a été changée :

image

Comme vous pouvez le voir l’identité des application est à présent définie comme étant “ApplicationPoolIdentity”. IIS 7.5 créé  en effet un nouveau compte utilisateur pour chaque application pool sous la forme “IIS APPPOOL\ApplicationPoolName” afin d’avoir une meilleure isolation. Ces comptes utilisateurs ne sont pas des comptes utilisateurs classiques puisqu’il s’agit d’un nouveau type de compte utilisateur proposé par Windows Server 2008 et Windows 7 : les comptes utilisateurs virtuels. Ces comptes utilisateurs sont des comptes utilisateurs spécifiques qui ont le même comportement que les comptes traditionnels (ces comptes peuvent être utilisé par des ACL sans aucun problème) mais ne sont pas visibles dans les interfaces de Browsing de comptes.

Ainsi si vous souhaitez ajouter les droits à l’utilisateur “IIS APPPOOL\DefaultAppPool” pour accéder à votre base, ne changez pas l’identité de votre ApplicationPool (même si c’est contraire à toutes les pages du web traitant du sujet [ici, ou encore ]) car vous perdrez le bénéfice de ce nouveau mécanisme de sécurité.

Pour rajouter cet utilisateur au niveau SQL Server il suffit de saisir son nom de compte complet sans passer par l’interface de sélection de compte.

image

En savoir plus :
What's New in Service Accounts in Windows Server 2008 and Windows 7
GoodBye Network Service

# Sunday, September 27, 2009

Quelques prédictions sur la PDC 09

Bon pour une fois, je vais essayer de me mouiller en essayant de deviner quels sont les éléments que l’on verra lors de l’édition de la PDC de cette année. La PDC est en effet l’évènement où de grosses annonces sont faites : première démo des API Win32, première présentation du framework .net et de Visual Studio .net, démonstration de Windows 7 et de Windows Azure, etc…

Bon OK, ce n’est pas vraiment une prédiction puisque c’est officiellement annoncé. Le focus de la PDC sera en grosse partie mis sur Windows Azure. L’offre de Cloud Computing de Microsoft devrait être disponible en version finale et devrait apporter son lot de nouveautés par rapport aux versions que l’on a a disposition actuellement.

Microsoft devrait proposer la Beta 2 de Visual Studio 2010 et du framework .net 4.0. Ces versions majeures devraient être très proche des produits finaux. Je m’attends à un focus sur l’amélioration des performances de l’IDE, à quelques nouveautés à propos de Workflow Foundation, et à une meilleure intégration du SDK d’Azure. Avec cette beta 2, l’éditeur devrait annoncer une période un peu plus précise de la disponibilité des versions finales.

Silverlight Mobile pourrait refaire surface. Le projet est lancé depuis bien longtemps et nous n’en entendons quasiment plus parler depuis bien longtemps. Que cela soit sur Windows Mobile ou sur les téléphones Nokia, l’investissement a été important et il ne serait pas surprenant d’avoir une annonce à ce sujet en novembre.

Après les Tablet PC et SecondLight la seconde version de la table Surface, un nouveau matériel pourrait être également présenté.  On pourrait donc voir le nouveau mur interactif ou peut-être la rumeur de tablette au nom de code Courier ou tout autre chose.

Ce que l’on ne verra pas à la PDC :

Windows mobile 7. Il y a quelques rumeurs qui circulent sur le fait que 7 arriverait plus rapidement que prévu. Je pense que ce n’est pas du tout le cas, et qu’il y a confusion avec Windows 7 embedded.

Et vous qu’en pensez-vous ? Quels produits et annonces attendez-vous ?

# Friday, September 25, 2009

News de la semaine #8

imageCommençons la semaine avec des nouvelles de Windows Azure. Microsoft a livré une première version des API de management de Windows Azure. Cette API permet de gérer les déploiements ainsi que les différents services hébergés sur Azure.

Microsoft et Zend (éditeur de PHP) ont annoncé les Simple API for Cloud Application Services. Ce projet permet aux développeurs PHP d’avoir une API qui leur est propre afin d’utiliser Windows Azure. Vous pouvez consulter cette interview menée par Jean Christophe Cimetière (transfuge de Microsoft France parti à la maison mère à Seattle) pour en savoir plus.

Microsoft vient de mettre à disposition la version 2 du Microsoft Web Platform Installer. Ce logiciel permet de déployer de manière très simple un grand nombre d’applications web en installant toutes les dépendances nécessaires. Ainsi si vous souhaitez installer WordPress sur votre serveur sans vous ennuyer à installer la bonne version de PHP, la bonne version de MySQL et configurer IIS afin que l’ensemble fonctionne correctement, cet outil est fait pour vous.

Toujours à propos du web, le programme BizSpark fait des émules puisque Microsoft a annoncé le programme WebsiteSpark. Ce programme permet aux indépendants travaillant dans le monde du développement web ainsi qu’aux petites entreprises (- de 10 employés) de disposer de produits Microsoft gratuitement que cela soit pour le développement et même pour des environnements de production. Vous pouvez visionner cette interview de Scott Guthrie pour plus d’infos.

A propos de WPF, Jaime Rodriguez continue de publier sa série de Q/A internes. Comme toujours, les questions (et donc les réponses) sont pertinentes et très intéressantes à découvrir.

Du coté des évènements, Le buzz continue d’être entretenu à propos de la PDC 09 grâce à l’annonce d’un Bootcamp gratuit dédié au développement sous Windows 7.

Microsoft France propose une nouvelle formule d’évènement avec les Microsoft Days Live. La formule est simple, au lieu de vous déplacer vous restez tranquillement au bureau et assistez à la retransmission en direct diffusé grâce à Silverlight. L’évènement de la rentrée aura de plus un invité de marque puisque Steve Ballmer en personne sera présent pour le lancement de Windows 7, Windows 2008 R2.

Du côté de l’actualité française, Sebastien Pertus vient de publier une première version de son outil d’analyse de serveurs SQL Server. Il est disponible gratuitement sur Codeplex.

Frédéric Colin continue sa série d’articles dédiés à WCF avec cette fois-ci un article dédié à l’utilisation de WCF avec le service MSMQ.

Et enfin Gaël Covain nous présente une astuce permettant de faire des points d’arrêts sur des instances spécifiques.

Crossposté vers THB

# Wednesday, September 23, 2009

Microsoft Days Live avec Steve Ballmer le 6 Octobre

Découvrez les nouveaux produits Microsoft en participant aux Microsoft Days Live avec Steve BallmerSe rendre à un évènement Microsoft même gratuit est très souvent un investissement même si nous avons la chance en France qu’ils soient gratuits. Entre les frais de déplacement, d’hébergement et d’immobilisation, l’investissement nécessite d’avoir un budget spécifique dédié à la participation aux évènements techniques.

Microsoft innove en vous proposant d’assister de manière “virtuelle” (sur Internet) au prochain grand évènement qui sera présenté par Steve Ballmer lui-même. L’éditeur de Redmond proposera en effet la retransmission en live via Silverlight du lancement des produits Windows 7, Windows Server 2008 R2 et Exchange Server 2010 avec intégration de Facebook et Twitter afin de pouvoir partager vos impressions. Voilà une initiative intéressante, j’y serais !

Pour d’infos :
S’inscrire au Microsoft Days Live avec Steve Ballmer

# Saturday, September 19, 2009

News de la semaine #7

imageDu côté de l’actualité française, Cyril Sansus nous rappelle les différences entre la création de thread et l’utilisation du ThreadPool. Exemples à l’appui, ce sont quelques rappels fondamentaux qui nous sont ainsi proposés.

Frédéric Colin continue sa série d’articles dédiés à l’extensibilité de WCF avec cette fois-ci l’exemple concret utilisé pour montrer les capacités de WCF en la matière.

Etienne Margraff nous informe d’une anomalie liée à l’ergonomie de la gestion de la mise en étagère (shelving) dans Visual Studio 2008.

Après l’annonce de la création de la CodePlex Foundation évoquée la semaine dernière, les premières réactions sont apparues telles que celles de Phil Haack, de Scott Bellware, Jeremy Miller et d’Ayende. Des opinions intéressantes afin de mieux comprendre l’initiative de Microsoft.

Du côté de l’actualité Produits, Ayende nous annonce la disponibilité en version 1.0 de son outil de profiling pour NHibernate et Hibernate.

Novell nous annonce quand à eux la disponibilité de MonoTouch en version 1.0. Ce produit permet de développer des application pour iPhone directement en managé grâce au langage C# et à un subset de Mono.

Crossposté vers THB

# Friday, September 11, 2009

News de la semaine #6

image

Azure arrive à grand pas, et par conséquent de plus en plus d’éditeurs et/ou développeurs testent l’utilisation des services Azure. Ainsi Ayende nous informe que NHibernate fonctionne sans problème particuliers avec SQL Azure. Il va même plus loin en faisant appel à des volontaires afin d’implémenter une fonctionnalité de Sharding destinée à palier la limitation de taille de 10Go imposée par Microsoft.

Toujours à propos d’Azure, Magnus nous propose un post à propos de l’utilisation de MEF (Managed Extensibility Framework) avec les projets Azure.

Du côté de l’actualité française, Lionel Limozin termine sa série de posts sur shared_ptr. Dans ce dernier post, il explique comment transformer un objet managé en pointeur natif void* sans avoir à se soucier de la destruction.

Mitsu Furuta nous présente le résultat du travail effectué lors de la Surface Academy. Ce stage de 2 mois à réuni 5 étudiants autour d’un projet : créer un jeu de carte en utilisant la table Surface. Le résultat est sympathique et permet de se rapprocher de conditions de jeu réelles.

Toujours à propos de WPF, Tomer Shamam a écrit un post rapide mais efficace afin de décrire les deux types de virtualisation proposés par le framework.

A propos de la sécurité, Microsoft propose une nouvelle extension à WinDbg qui vous indique si un crash applicatif peut être exploité à des fins malicieuses. Une extension donc fortement intéressante disponible sur codeplex.

Du côté de l’actualité Produits, Patrick Smacchia nous annonce la disponibilité en RTM de CppDepend la version du populaire outil NDepend dédié aux applications C++. Un outil indispensable afin de mieux comprendre le code d’une application.

MonoDevelop passe en version 2.2 et passe la seconde afin de mieux supporter le multi-plateforme.

Et enfin pour terminer, une actualité un peu particulière qui concerne la création d’une fondation Open Source par Microsoft : CodePlex Foundation. Une bonne initiative soutenue par des têtes connues telles que Miguel De Icaza de Novell. A noter que cette bonne nouvelle est en partie gachée par l’annonce du départ de Sam Ramji de Microsoft. Sam Ramji a en effet été une des figures emblématiques qui ont réussi à faire évoluer les mentalités et la stratégie de l’éditeur vers plus d’ouverture vers les standards et une grande ouverture vers le monde Open Source.

Crossposté vers THB

# Thursday, September 10, 2009

Exécuter du code natif sous Windows Azure

Dans le cadre de la migration d’une application existante vers Windows Azure j’ai été confronté à ce message d’erreur :

Required permissions cannot be acquired

En regardant de plus près la StackTrace, j’ai constaté que cette exception liée donc à un environnement restreint était causée par le chargement d’une assembly qui était un wrapper de DLL natives. Après quelques recherches dans les propriétés des projets de ma solution, j’ai finalement réussi à trouver où activer l’exécution de ce type de code.

Si vous souhaitez souhaitez exécuter du code en Full Trust et donc activer l’exécution de code natif, vous devez modifier la définition de votre service et modifier la valeur de l’attribut enableNativeCodeExecution à true :

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="DisplayOnTheCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="DisplayRole" enableNativeCodeExecution="true">
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
    <ConfigurationSettings />
  </WebRole>
</ServiceDefinition>

Aller plus loin avec les Threads

Lorsque l’on parle de Thread avec le framework .net, le reflexe naturel est de penser au namespace System.Threading. Ce namespace contient en effet presque tout ce que .net vous propose afin de gérer le multithreading.

Cela est peu connu et peu utilisé, mais il est possible de dépasser certaines limites de la classe Thread en utilisant une classe auxiliaire ProcessThread présente quand à elle dans System.Diagnostics. Cette classe fournit tout un tas de service interessant comme la possibilité de définir l’affinité d’un thread afin de le faire exécuter sur un processeur en particulier ce qui n’est pas possible à l’aide de la traditionnelle classe Thread :

using System.Diagnostics;

namespace FurtherWithThreads
{
    class Program
    {
        static void Main(string[] args)
        {
            int threadId = AppDomain.GetCurrentThreadId();
            SetProcessorAffinity(threadId,1);
            while(true)
            {
                
            }
        }

        static void SetProcessorAffinity(int threadId, int processor)
        {
            var processorThread = (from ProcessThread t in Process.GetCurrentProcess().Threads
                                  where t.Id == threadId
                                  select t).Single();
            processorThread.ProcessorAffinity = (IntPtr) processor;
        }
    }
}

image image

Comme vous pouvez le constater le code s’exécute bien sur des cœurs différents comme souhaité.

# Saturday, September 05, 2009

News de la semaine #5

imageC’est désormais une tradition, nous allons débuter les actualités de la semaine avec une nouvelle qui concerne Windows Azure. Steve Marx nous annonce en effet que les délais d’activation des clés pour accéder à Windows Azure sont désormais supprimés. Il est donc plus que jamais temps de tester l’offre de Cloud Computing de Microsoft.

Phil Haack nous propose un post que j’apprécie tout particulièrement à propos des différents types de réaction des développeurs face aux nouveautés des langages. Un post qui reflète bien la réalité des choses et qui vous rappellera sans aucun doute bien des choses si vous êtes formateur et/ou speaker.

Toujours à propos des langages Cyril présente une astuce très efficace permettant d’éviter les problèmes de performance lié à la méthode TryParse du type Enum.

Du coté du C++, Lionel Limozin continue sa série de post concernant la prévention des fuites mémoires (la première partie est toujours disponible).

Matthieu Mezil nous propose quand à lui un exemple d’utilisation de PLinq, exemple couplé (sans surprise de la part de Matthieu) à Entity Framework.

Je ne parle habituellement pas de SQL Server mais je ferais exception à cela cette semaine en vous invitant chaudement à voter pour la suggestion de Christian à propos d’une aberration au niveau de l’interface de création de connexion. La suggestion est présente sous Connect et plus de personnes la soutiendront plus on aura de chances qu’elle soit prise en compte par Microsoft.

Et enfin, nous allons terminer ces news par les actualités Produits et notamment ceux de l’excellente société JetBrains. L’éditeur a en effet annoncé la mise à disposition en version beta de YouTrack leur nouvel outil de bug tracking. Quand à ReSharper, un nouveau plugin intéressant vient de voir le jour. Nommé Whysharper celui-ci vous propose d’en savoir plus sur les différentes recommandations proposées par R#.

Après la sortie en RTM de Windows 7, Microsoft vient de mettre à disposition une CTP de la version embedded dédiée au monde de l’embarqué.

Toujours du coté de Redmond, Virtual Earth Server V2 vient d’être mis à disposition. Une offre intéressante si vous avez besoin d’héberger vous même la solution de cartographie de Microsoft pour des raisons de contraintes techniques ou politiques.

PostSharp vient de fêter sa 5ème année d’existence.. Des motivations de départ à l’impact sur sa carrière professionnelle, le développeur principal de ce framework  d’AOP pour .net retrace à cette occasion l’historique du projet.

Crossposté vers THB

# Thursday, September 03, 2009

TechHeadBrothers ouvre une section vidéo !

imageLaurent Kempé vient d’annoncer l’ouverture d’une nouvelle section destinée aux vidéos techniques sur TechHeadBrothers. Cette nouvelle va permettre de varier les différents types de contenus présents sur le site.

Il n’y a pour l’instant qu’une seule vidéo (le PostItCast que j’avais publié il y a quelques semaines), mais mon petit doigt me dit que cette nouvelle section va vite se remplir ;)

Vous êtes donc cordialement invité à vous rendre sur TechHeadBrothers afin de profiter de tout ce contenu technique autour de .net, et même pourquoi pas, à contribuer en soumettant vos propres actualités/astuces/articles/vidéos !

En savoir plus :
L’annonce de Laurent

# Wednesday, September 02, 2009

CAT.net n'est pas encore au point

Cela faisait un moment que je souhaitais tester un outil de Microsoft peu connu : Microsoft Code Analysis Tool .NET (CAT.net) disponible en version CTP 1.1 depuis la fin juin. Sur le papier cet outil a l’air prometteur puisqu’il permet d’analyser des assemblies afin de détecter des failles de sécurité, tels que les injections SQL, les failles CSS, les injections LDAP ou XPATH, etc. Bref un outil qui devrait être dans la boite à outils de tout développeur. Connaissant l’existence de l’outil, j’ai toujours été étonné du peu de publicité qui l’entoure. Excepté le blog de l’équipe qui a développé l’outil, quasiment personne n’en parle.

J’ai donc décidé cet après-midi de tester l’outil afin de pouvoir juger de ses capacités et ainsi en faire la promotion si les quelques tests que j’allais effectuer s’avéraient concluants. J’avais donc prévu une procédure de test assez simple : test avec un code créé pour l’occasion pour vérifier que l’outil détectait bien des failles évidentes, puis test sur de vrais projets tels que DasBlog et Community Server.

Et bien malheureusement, je rédige ce post afin de vous indiquer que je n’ai mis que 10 minutes a effectuer le test puisqu’à la vue de ce simple code, aucune alerte n’est levée par l’outil :

var connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=TestDatabase;Integrated Security=True");
connection.Open();
var command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "select * from employees where lastname_employee='" + textBox1.Text + "'";
var reader = command.ExecuteReader();

Bref, ne perdez pas de temps à utiliser cet outil, il n’est pas encore au point.