Déboguer une application à distance

Tutoriel pour déboguer une application à distance avec Visual Studio 2008 et Visual Studio 2010

http://www.certifieddotnet.com/confluence/pages/viewpage.action?pageId=1015867

Installer Windows 8 sous VirtualBox

Virtualisation de Windows 8 Beta avec Virtual Box


 

Sommaire

 

Pré-requis.

Récupération de l’outil de virtualisation VirtualBox.

Installation de VirtualBox.

Récupération de l’ISO Windows 8.

Préparation de l’environnement avec VirtualBox.

Installation de Windows 8 sur la machine virtuelle.

Problèmes rencontrés.


 

Pré-requis

Vous pouvez vérifier que votre ordinateur dispose d’une configuration adéquate à la virtualisation grâce à cet outil de Microsoft (pour PC donc). Un PC récent fonctionnera sans soucis. Mais il est toujours bon de s’en assurer.
http://www.microsoft.com/Windows/virtual-pc/support/configure-bios.aspx

Récupération de l’outil de virtualisation VirtualBox

Avant tout, vous devrez récupérer VirtualBox ici : https://www.virtualbox.org/wiki/Downloads

VirtualBox est un outil gratuit qui permet de faire tourner des machines virtuelles sur des machines compatibles avec xxxxxx. C’est désormais ORACLE qui assure le suivi de cet outil initialement mis au point par InnoTek.

Ce tutoriel a été réalisé avec VirtualBox 4.1.4-74291 pour Windows.

Installation de VirtualBox

Procéder à l’installation par défaut de VirtualBox. L’installation par défaut consistant en exécuter le programme d’installation puis cliquer sur NEXT chaque fois que cela est demandé J

Récupération de l’ISO Windows 8

Pour récupérer Windows 8, rendez-vous sur le site de Microsoft et choisissez l’édition qui vous convient.
http://msdn.microsoft.com/en-us/Windows/apps/br229516

Pour ce tutoriel nous avons décidé d’installer Windows 8 Developer Preview with developer tools English 64 bits.

Préparation de l’environnement avec VirtualBox

Exécuter VirtualBox.
Cliquer sur le bouton Créer pour demander la création d’une nouvelle machine virtuelle. L’assistant (le wizard) démarre, et vous pouvez cliquer sur SUIVANT.

L’écran qui suit vous demande quelques infos comme le nom de machine virtuelle (nous l’appelons Windows8beta dans notre cas) et dans cette version VirtualBox nous propose un environnement Windows 8 ce qui est donc idéal pour préparer notre machine virtuelle.

 

L’écran suivant vous demande de sélectionner la quantité de RAM à allouer à la machine virtuelle. Plus il y en a mieux c’est ! Et même si Windows 8 demande en théorie 1 Go, mieux vaut compter plus. Nous mettons donc 2 Go :

 

 

L’étape qui suit vous demande de créer un disque dur virtuel pour Windows 8. Sélectionnez CREER UN NOUVEAU DISQUE DUR puis cliquez sur SUIVANT. Cela va lancer l’assistant de création de disque virtuel. Vous pouvez choisir VDI.


VDI est le format que l’on utilise quand on crée un nouveau disque virtuel pour une nouvelle machine.
VMDK est le format de virtualisation utilisé notamment par VMWARE.
VHD est le format utilisé par Microsoft.
HDD est le format utilisé par Parallels.

 

L’écran suivant vous demande de spécifier la taille de disque virtuel à allouer pour votre système Windows 8. Préférez une taille fixe pour maîtriser votre système global. La taille minimum préconisée pour Windows 8 est de 20 Go. C’est ce que nous allons choisir.

 

 

 L’écran de récapitulatif vous permet de finaliser/confirmer la création du disque virtuel.

 

Il va maintenant falloir patienter le temps que le disque dur virtuel tout soit préparé.

 

Le disque virtuel prêt, un nouvel écran récapitulatif vous propose de valider la création de la machine virtuelle.


Votre machine virtuelle est désormais prête !

Il nous fait maintenant installer Windows 8… Pour cela faire un clic droit sur la machine virtuelle fraîchement créée et cliquer sur Configuration dans le menu contextuel.

 

Sélectionnez Affichage puis cocher assurez vous que l’accélération 2D et l’accélération 3D sont cochées.

 

Si, comme sur l’écran ci-dessus, un message d’alerte relatif à la mémoire apparaît, allez dans la section SYSTEME, onglet CARTE MERE, et réduisez la mémoire allouée à la machine virtuelle.

Assurez-vous que pour la section SYSTEME, onglet CARTE MERE, la case Activer les IO-APIC est cochée.

Assurez-vous que pour la section SYSTEME, onglet PROCESSEUR, la case Activer PAE/NX est cochée.

Fermez la fenêtre de Configuration en cliquant sur OK pour valider vos modifications.

Installation de Windows 8 sur la machine virtuelle

Sur l’écran principal de VirtualBox, sélectionnez votre machine virtuelle (Windows8beta) et cliquez sur le bouton DEMARRER.

L’assistant de premier lancement démarre.

 

Cliquez sur SUIVANT pour arriver à la sélection du média de lancement :

 

Cliquez sur l’icône permettant d’explorer votre disque dur de sorte à pouvoir sélectionner l’ISO de Windows que vous avez téléchargée.


Cliquez sur OUVRIR puis sur SUIVANT.

Un écran de récapitulatif de premier lancement de la machine virtuelle vous affiche un récapitulatif :

 



Il ne vous reste plus qu’à cliquer sur Démarrer ! L’installation de Windows 8 commence !


Problèmes rencontrés 

Si vous recevez un message d’erreur concernant la virtualisation, vérifiez la configuration de votre BIOS.

Si vous recevez un message d’erreur relatif à l’impossibilité de faire tourner un environnement 64 bits sur un processeur 32 bits, changez le type de système et sélectionner Windows 7 64 bits plutôt que Windows 8 :



Vous pourrez quand même installer Windows 8 sur cette machine virtuelle 
J

 

 

 

 

Rediriger requetes site web IIS vers Tomcat ou autre

Si vous avez un serveur Web de type Windows 2008 avec IIS et pourquoi pas PLESK, vous pourriez vous retrouver dans un cas où vous voudriez que :
www.mondomaine.com/blabla/
redirige de manière transparente vers un site Web tournant sur un serveur Web Tomcat (hébergé sur la même machine)...
En résumé, j'interroge www.mondomaine.com/blabla , IIS récupère la requête et retourne à l'utilisateur la réponse de http://localhost:8090/monSiteSurTomcat

Jusqu'à présent pour rediriger des requêtes IIS vers un serveur Tomcat, de manière transparente, il fallait utiliser l'ISAPI_REDIRECT.DLL mis à disposition par Jakarta avec, pour ce qui me concerne, des résultats un peu trop aléatoire... J'y ai passé des heures dernièrement pour ne jamais atteindre mon but !

Des heures pour finalement "découvrir" qu'avec IIS 7.5 il existait une bien belle alternative à l'utilisation de l'ISAPI_REDIRECT.DLL.

1) Téléchargez le module de redirection dédié IIS 7.x nécessaire http://www.iis.net/download/ApplicationRequestRouting ici. Avec Application Request Routing 2.5 en quelques secondes vous allez pouvoir faire ce que vous voulez en terme de redirection. Et ça c'est bien !

2) Après intallation, démarrez IIS (inetmgr.exe) puis cliquez sur le nom du serveur. Dans les modules (rubrique IIS), vous verrez Application Request Routing Cache. Double cliquez dessus pour accéder à la configuration du module. Dans le panneau de droite, cliquez sur Server Proxy Settings. Cochez Enable Proxy et laisser les valeurs par défaut.

3) Dans l'arborescence des sites Web présentée par IIS (à gauche), sélectionnez le site Internet pour lequel vous souhaitez mettre en place cette redirection. Par exemple : www.mondomaine.com.
Dans la fenêtre centrale, double cliquez Url Rewrite pour ouvrir le module de Rewriting . Dans la zone de droite, cliquez sur Add Rules. Vous devez maintenant éditer la règle.

4) Donnez un nom à votre règle (par exemple Tomcat).
Dans la zone Pattern spécifiez le modèle qui permettra à IIS d'interpréter votre règle. Nous voulons rediriger les requêtes : www.mondomaine.com/blabla/ vers notre serveur Tomcat, donc le pattern sera (blabla.+)
Nous éditons maintenant la section Action et indiquons vers quoi IIS doit rediriger en INTERNE , et donc dans notre cas, ce sera : http://localhost:8090/{R:0}
Le {R:0} sera remplacé par ce qui se trouve à la suite de notre pattern en entrée.

A ce stade, on vient de spécifier à IIS que www.mondomaine.com/blabla/index.jsp devra retourné le flux de notre serveur interne Tomcat : localhost:8090/index.jsp

Cela marche à merveille !

Simple, Rapide, Efficace...

BONUS : si vous recevez un message d'erreur de type URL_DOUBLE_ESCAPED 404.11, éditez le fichier Web.config de votre site web www.mondomaine.com pour ajouter :
<requestFiltering allowDoubleEscaping="true">. Vous pouvez aussi le faire au niveau serveur.
http://support.microsoft.com/kb/942076

BONUS 2 : après installation du module ARR 2.5 sur un serveur PLESK, vous pourriez rencontrer des problèmes de la part de PLESK. En effet, pour une raison obscure, ARR 2.5 va modifier des droits des dossiers PLESK qui aura par la suite du mal à charger certaines DLL...
Vérifiez les droits pour les dossiers :
"C:\Program Files\ IIS" et "C:\Program Files (86)\IIS" et assurez vous que les comptes techniques de PLESK (paaadm et psacln) ont les droits de lecture écriture

 

 

 

Méthode simple pour faire de la réécriture d'URL (URL Rewriting)

Pour éviter les URL de type GetMedia.aspx?id=1, il y a une mise en oeuvre rapide faisable dans le fichier GLOBAL.ASAX :

 

 

void Application_BeginRequest(Object sender, EventArgs e) 
{
 string strCheminActuel = Request.Path.ToLower();

 if (strCheminActuel.IndexOf( "/media/" ) > -1) 
 {
  string strNouveauChemin = string.Format("GetMedia.aspx?id={0}",
Path.GetFileNameWithoutExtension( strCheminActuel ));  
  Context.RewritePath( strNouveauChemin );
 }
}

Avec l'exemple ci-dessus,
http://www...../media/3868
va rediriger discrètement (silencieusement sans que l'utilisateur ne le sache) vers :
http://www..../GetMedia.aspx?id=3868
Intéressant pour les utilisateurs du site... C'est quand même plus jolie !
Et pratique pour le référencement car les robots comme GOOGLE vont préférer...

 

Accès simple aux propriétés déclarées dans la MasterPage depuis une Page

On n'y pensepas assez souvent !

L'utilisation de @MasterType permet de facilement rendre accessible les propriétés déclarées dans une MasterPage, par la page utilisant la MasterPage...

Soit une Master Page : MaMasterPage.Master  qui contient une propriété MaPropriete : 
public string MaPropriete { get; set; }

Soit une page : MaPage.aspx qui utilise l MaMasterPage.Master.

 

Dans MaPage.aspx : 

<%@ Page Title="Ma Page" Language="C#" MasterPageFile="~/MaMasterPage.master" AutoEventWireup="true" CodeBehind="MaMasterPage.aspx.cs" Inherits="WebApplication1.MaMasterPage" %>
<%@ MasterType VirtualPath="~/MaMasterPage.Master" %>
[....]

 

Dans MaPage.aspx.cs je vais pouvoir faire appel à MaPropriete contenu dans la MasterPage en utilisant l'objet Master:

Master.MaPropriete

 

Il faut bien le dire ceci est très pratique et facile à mettre en oeuvre.

Les propriétés ainsi rendu accessibles, doivent être "public" dans la Master Page.

 

 

A propos de l'auteur

 

Développeur depuis plus de 10 ans, j'ai commencé la programmation dès l'âge de 9 ans sur un PC 8088 !!

GW-Basic, Pascal, Turbo Pascal, Delphi ont fait mes bases... Puis Java , bien plus tard... Pour enfin avoir découvert le C#... Quel plaisir de développer avec ce langage des solutions ASP.NET... Le développement Web comme jamais je ne pouvais l'imaginer possible :)

Aujourd'hui titulaire du MCSD VS 6.0, MCAD .NET, et MCT ...

Sur ce blog, je souhaite partager des choses simples mais efficaces... Des problèmes de tous les jours que l'on peut rencontrer et qu'il est simple de régler :)

Mes certifications

Month List