Note explicative pour la réalisation des TPs avec le Serveur Web IIS 7
Transcription
Note explicative pour la réalisation des TPs avec le Serveur Web IIS 7
Note explicative pour la réalisation des TPs avec le Serveur Web IIS 7 Installation du service IIS Fermer toutes les applications ouvertes (par précaution) Ouvrir le panneau de configuration, Programmes, Programmes et fonctionnalités Cliquer sur Activer ou désactiver des fonctionnalités Windows (panneau de gauche) : patienter pendant le chargement de la liste des fonctionnalités et sélectionner la rubrique Services Internet (IIS) : Sélectionner également les fonctionnalités supplémentaires suivantes de la rubrique Fonctionnalités de développement d'applications : ‐ ASP.NET ‐ Extensibilité .NET (vient automatiquement avec ASP.NET) ‐ Extensions et filtres ISAPI (vient automatiquement avec ASP.NET) Sélectionner également les fonctionnalités supplémentaires suivantes de la rubrique Sécurité : ‐ Filtrage des demandes (vient automatiquement avec ASP.NET) Valider par OK. 1 Vérification du bon fonctionnement A l'aide d'un navigateur visiter la page http://localhost/. Post‐installation Exécuter la commande suivante en tant qu'administrateur pour effectuer la liaison entre IIS, ASP.NET et le Microsoft .Net Framework 4 (POUR LES FICHIERS ASMX EN TOUS CAS) \Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe ‐i Premiers pas dans le Gestionnaire de services internet IIS 2 Gestion des sites Ajout d'un site Clic droit sur Sites, Ajouter un site web Nom du site : MonSiteWcf1 Chemin d'accès physique : C:\Users\user\Documents\Visual Studio 2013\Projects\WcfService1 Port : 81 (le 80 étant déjà occupé) Configuration du pool d'application 3 Notre application WCF utilisant le Microsoft .Net Framework, nous devons configurer le pool d'applications pour ce site en conséquence dans le gestionnaire IIS. Gestion d'un site particulier Modification du port d'écoute Pools d'applications Permet la gestion des applications sur le serveur et leur contexte d'exécution : c'est ici que l'on défini les références aux frameworks utilisés par l'application et nécessaires à son bon fonctionnement. Création d'un projet WCF simple Nouveau projet / Application de service WCF utilisant le Microsoft .Net Framework 4.0 4 Compilation du projet par défaut sans rien modifier : Profil Clic sur Personnalisé, puis on donne un nom au profil : profilWcf1, par exemple Connexion On définit ensuite les informations sur le serveur de publication créé précédemment: 5 Méthode de publication : WebDeploy Serveur : localhost Nom du site : MonSiteWcf1 URL de destination : http://localhost:81/ Vérification des paramètres fournis : Clic sur Suivant Paramètres 6 Clic sur Suivant Aperçu Un clic sur Démarrer l'aperçu affiche la liste des fichiers qui seront disponibles (publiés) sur le serveur. 7 Consommation du service depuis Windows Créer un projet Windows Forms, Web ASP.NET ou Console Ajouter une référence vers le service web à consommer Consommation du service depuis NetBeans Créer un projet Appliation Java ou Web Ajouter un élément de type Service client web : renseigner l'URL d'accès au service Web complété de ? WSDL Pour utiliser le service web depuis une classe : clic droit, Insert Code ..., Call web Service Operation ... et sélectionner la méthode à utiliser souhaitée. // Technique ASMX package jwsdata; public class JWSData { public static void main(String[] args) { System.out.println(helloWorld()); } private static String helloWorld() { org.tempuri.CalcService service = new org.tempuri.CalcService(); org.tempuri.CalcServiceSoap port = service.getCalcServiceSoap12(); return port.helloWorld(); } } // Technique WCF 8 package jwsobject; public class JWSObject { public static void main(String[] args) { System.out.println(getData(2)); } private static String getData(java.lang.Integer value) { org.tempuri.Service1 service = new org.tempuri.Service1(); org.tempuri.IService1 port = service.getBasicHttpBindingIService1(); return port.getData(value); } } Echange de données complexes (objets issus de classes) Côté serveur Créer un projet basé sur des services ASMX ou WCF Créer la classe pour l'objet à échanger entre le serveur et le client. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace ObjectService { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class DepartementService : System.Web.Services.WebService { [WebMethod] 9 public Departement GetDepartement(Departement dept) { return dept; } } } using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ObjectService { public class Departement { private string nom; public string Nom { get { return nom; } set { nom = value; } } private int numero; public int Numero { get { return numero; } set { numero = value; } } } } Côté client Créer un projet Console et ajouter une référence vers le service web à consommer using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DepartementForm { class Program 10 { static void Main(string[] args) { ServiceReference1.DepartementServiceSoapClient sr1 = new ServiceReference1.DepartementServiceSoapClient(); ServiceReference1.Departement dept; dept = new ServiceReference1.Departement(); dept.Nom = "Nièvre"; dept.Numero = 58; sr1.GetDepartement(dept); Console.WriteLine("Département " + sr1.GetDepartement(dept).Nom + " : numéro " + sr1.GetDepartement(dept).Numero); } } } Messages d'erreur et solutions Au cours du déploiement depuis Visual Studio, l'erreur suivante peut être rencontrée : Échec de la tâche de déploiement Web. (Le pool d'applications que vous essayez d'utiliser a la propriété 'managedRuntimeVersion' définie à 'v2.0'. Cette application requiert 'v4.0'. Pour en savoir plus : http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_APPPOOL_VERSION_MISMATCH.) Il suffit de configurer le pool d'application utilisé avec le bon framawork et de relancer la publication. Au cours de l'affichage des pages sur le serveur IIS, les erreurs suivantes peuvent être rencontrées : "Impossible d'accéder à la page que vous avez demandée, car les données de configuration connexes relatives à la page ne sont pas valides." Cela signifie qu'un pré‐requis n'est pas installé au niveau du serveur : il s'agit ici du Rôle ASP.NET. Erreur HTTP 403.14 ‐ Forbidden Le serveur Web est configuré pour ne pas afficher le contenu de ce répertoire. => Il faut activer (si on le souhaite seulement) l'exploration de répertoire Erreur HTTP 500.21 ‐ Internal Server Error 11 La liste de modules du gestionnaire "WebServiceHandlerFactory‐Integrated" contient un module incorrect "ManagedPipelineHandler" Erreur du serveur dans l'application '/'. Le service ne peut pas être activé car il ne prend pas en charge la compatibilité ASP.NET. La compatibilité ASP.NET est activée pour cette application. Désactivez le mode de compatibilité ASP.NET dans le fichier web.config ou ajoutez l'attribut AspNetCompatibilityRequirements au type de service en définissant RequirementsMode à 'Allowed' ou à 'Required'. Modifier le fichier Web.config en remplaçant : <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/> Par : <serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> Lancement de Tomcat 8.0.15 depuis NetBeans 8.0.2 '127.0.0.1' n'est pas reconnu en tant que commande interne ou externe, un programme ex‚cutable ou un fichier de commandes. Modifier le fichier catalina.bat et retirer les guillements lors de la définition des deux affectations JAVA_OPTS. 12