Meilleur auteur de réponses
Compiler le code behind dans IIS

Question
-
Bonjour tout le monde,
Je viens de mettre mon application Web (ASP .NET) dans IIS (version 7), de temps en temps je devrai modifier quelques fichiers .cs, mais les modifications ne sont pas prisent en compte, c-à-d lorsque je modifie un fichier .cs, je vois encore l'ancien page .aspx avec l'ancien code .cs, et je ne vois pas les modifications que j'ai effectué !!!
Je pense que IIS ne compile pas le code behind, si oui, qu'est la solution pour résoudre ce problème ?!
Merci
Bilal
Réponses
-
Lors d'une Application Web, il faut le compiler, et envoyer le résultat de la compilation au serveur. A partir de là les fichiers sources (aspx.cs) ne servent à rien.
Une fois la compilation réalisée, toutes tes classes sont rangés dans une DLL de même nom que ton projet.
Si tu veux exclure un fichier de cette DLL, la méthode que j'ai cité plus haut devrait marcher (en mettant un "CodeFile" au lieu d'un "CodeBehind" dans l'aspx). Mais à utiliser seulement dans le cas ou il n'y a pas d'autres moyens, ce n'est pas le plus propre.
Dans ton cas il utilise l'ancien fichier car tu n'as pas écrasé la DLL en question, qui contient ton cs compilé.
- Modifié Frontier. _ jeudi 7 juin 2012 07:07
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:27
-
Bonjour,
Ma première réponse a été écrite pour les projets d’application web parce que Bilal a dit « Je viens de mettre mon application Web ». C’est vrai que pour un site web : « Par défaut, les pages Web et les fichiers de code d'un projet de site Web sont compilés dynamiquement sur le serveur Web lorsque les utilisateurs demandent une ressource (page du site Web, par exemple) pour la première fois. Une fois que les pages et les fichiers de code ont été compilés pour la première fois, les ressources compilées sont mises en cache. Par conséquent, les requêtes suivantes de cette même page sont très efficaces. Au lieu d'utiliser cette compilation dynamique, vous pouvez précompiler un projet de site Web. » et en plus « Cela présente de nombreux avantages et permet notamment d'obtenir un temps de réponse initial plus rapide, de rechercher des erreurs, de protéger le code source et d'effectuer un déploiement efficace. Cette opération s'avère particulièrement importante pour les sites de grande taille où les modifications des pages Web et des fichiers de code sont fréquentes. »
Si on parle d’un projet d’application web : « Tous les fichiers de code (fichiers autonomes, code-behind et de classe de concepteur) du projet sont précompilés dans un assembly unique. ». En plus, si vous analysez avec attention les différences entre un projet d’application web et un projet de site web, vous allez voir que pour l’application web « Vous compilez explicitement le code source sur l'ordinateur utilisé pour le développement ou le contrôle de code source. », d’où ma première réponse.
J’espère que ces liens vont vous aider, Bilal, à déployer correctement votre application web après faire des modifications.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:28
-
Donc dans ce cas le source ne sert à rien. On compile l'application et ce sont des DLLs qui sont déployées... VS 2010 dispose d'une fonction "publier" qui va par exemple supprimer le contenu du site web et déployer les nouveaux fichiers (bien sûr l'idée est de ne pas mettre les données sur le site web pour les préserver d'un déploiement à l'autre). Sinon il faut écraser au minmum la DLL unique squi contient tout le code behind de l'appli (nomsolution.dll je pense) et si on modifie une page ASPX, la DLL qui correspond à la page nomdelapageguid.dll...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:28
Toutes les réponses
-
Bonjour,
Est-ce que vous recompilez dans Visual Studio votre code et puis relancez l’application ? IIS ne peut pas compiler le code behind, c’est l’outil de développement qui le fait.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
je pense qu'il est possible en définissant ou aller chercher le code source en question.
Dans le <%@ Page %> tu as :
Inherits="Namespace.MaClasse" CodeBehind="MaClasse.aspx.cs"
Et en remplaçant par :
CodeFile="MaClasse.aspx.cs" Inherits="Namespace.MaClasse"
Etrangement je peux modifier mon code source et la recompilation est automatique.
Concernant ce que dit Ciprian, c'est possible. Ca ne métonnerai pas qu'il y ai une option à activer dans IIS.
(Il faut savoir que IIS hébergait un Site Web avant de l'avoir transformé en Application Web). -
Bonjour,
Oui de mémoire on a pratiquement toute l'étendue possible entre une compilation complète sous IIS et une pré-compilation complète. C'est à priori l'une des différences entre les projets "application web" et les projets "site web". De mémoire on a un menu contextuel au niveau du projet pour passer d'un modèle à l'autre sans savoir à tout modifier manuellement si besoin était.
Si l'auteur de la question revient il faudrait savoir quel est le modèle que l'on veut car ce n'est pas très clair dans la question :
- soit on veut effectivement déployer le source et il faudrait alors un "projet web"
- soit on est avec une "application web" mais les modifications ne sont pas correctement déployées en prodJ'ai la vague impression que l'on a le source sur le serveur alors qu'on utilise une "application web" ?
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
-
Merci pour votre réponse et merci aussi à Frontier et Ciprian.
En bref, j'ai une application web et pas un site web, j'effectue les modifications sur mon ordinateur (en local), après que j'ai modifié un fichier .cs par exemple, je remplace celui dans le serveur de production, mais les modifications ne sont pas prises en compte, le serveur IIS utilise l'ancien fichier !!!
Bilal
-
Lors d'une Application Web, il faut le compiler, et envoyer le résultat de la compilation au serveur. A partir de là les fichiers sources (aspx.cs) ne servent à rien.
Une fois la compilation réalisée, toutes tes classes sont rangés dans une DLL de même nom que ton projet.
Si tu veux exclure un fichier de cette DLL, la méthode que j'ai cité plus haut devrait marcher (en mettant un "CodeFile" au lieu d'un "CodeBehind" dans l'aspx). Mais à utiliser seulement dans le cas ou il n'y a pas d'autres moyens, ce n'est pas le plus propre.
Dans ton cas il utilise l'ancien fichier car tu n'as pas écrasé la DLL en question, qui contient ton cs compilé.
- Modifié Frontier. _ jeudi 7 juin 2012 07:07
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:27
-
Bonjour,
Ma première réponse a été écrite pour les projets d’application web parce que Bilal a dit « Je viens de mettre mon application Web ». C’est vrai que pour un site web : « Par défaut, les pages Web et les fichiers de code d'un projet de site Web sont compilés dynamiquement sur le serveur Web lorsque les utilisateurs demandent une ressource (page du site Web, par exemple) pour la première fois. Une fois que les pages et les fichiers de code ont été compilés pour la première fois, les ressources compilées sont mises en cache. Par conséquent, les requêtes suivantes de cette même page sont très efficaces. Au lieu d'utiliser cette compilation dynamique, vous pouvez précompiler un projet de site Web. » et en plus « Cela présente de nombreux avantages et permet notamment d'obtenir un temps de réponse initial plus rapide, de rechercher des erreurs, de protéger le code source et d'effectuer un déploiement efficace. Cette opération s'avère particulièrement importante pour les sites de grande taille où les modifications des pages Web et des fichiers de code sont fréquentes. »
Si on parle d’un projet d’application web : « Tous les fichiers de code (fichiers autonomes, code-behind et de classe de concepteur) du projet sont précompilés dans un assembly unique. ». En plus, si vous analysez avec attention les différences entre un projet d’application web et un projet de site web, vous allez voir que pour l’application web « Vous compilez explicitement le code source sur l'ordinateur utilisé pour le développement ou le contrôle de code source. », d’où ma première réponse.
J’espère que ces liens vont vous aider, Bilal, à déployer correctement votre application web après faire des modifications.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:28
-
Donc dans ce cas le source ne sert à rien. On compile l'application et ce sont des DLLs qui sont déployées... VS 2010 dispose d'une fonction "publier" qui va par exemple supprimer le contenu du site web et déployer les nouveaux fichiers (bien sûr l'idée est de ne pas mettre les données sur le site web pour les préserver d'un déploiement à l'autre). Sinon il faut écraser au minmum la DLL unique squi contient tout le code behind de l'appli (nomsolution.dll je pense) et si on modifie une page ASPX, la DLL qui correspond à la page nomdelapageguid.dll...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Marqué comme réponse Ciprian Duduiala vendredi 8 juin 2012 06:28
-
Merci beaucoup Patrice Scribe, Ciprian Duduiala, Frontier_, pour vos réponses, ainsi j'ai bien compris la notion de déploiement sur IIS ainsi le fichier dll de l'application ou bien celui de la page aspx...
Je trouve que pour résoudre ce problème soit d'utiliser la fonction "publier" sur Visual Studio, soit d'écraser le dll de l'application, soit comme indique les liens fournis par Ciprian d'utiliser l'outil aspnet_compiler qui est vraiment puisant pour résoudre ce type de problème.
Merci encore à vous tous, ^^
Bilal