Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Deploiement de service WCF (.svc) dans IIS et "Allow this precompiled site to be updatable"

Lorsque vous déployer un service WCF sur IIS, vous devez forcément passer par un fichier .svc. Ce fichier permet d'indiquer à IIS la classe implémentant le service et ainsi faire le lien entre IIS et le runtime WCF de .net. Ce fichier est généralement composé d'une seule ligne possédant une directive de page ServiceHost

Par exemple si vous avez un service contenu dans la classe "Sample.Upload.Services.Upload" alors le fichier svc contiendra seulement cette ligne :

<%@ ServiceHost Service="Sample.Upload.Services.Upload" %>

Bien sur, il est également nécessaire d'avoir toute la config verbeuse habituelle de WCF dans le web.config. A noter que cette directive possède également l'attribut Factory qui permet de personaliser la création du ServiceHost, par défaut la classe utilisé est ServiceHostFactory.

Heberger le fichier .svc dans un site web existant ?

Ce fichier .svc est donc tout à fait semblable aux autres fichiers d'un site web ASP.net. Si vous avez un site web qui expose des données via WCF, il est tentant de mettre ce fichier .svc au sein du même projet Visual Studio.

C'est en effet une idée logique. Mais attention lors de la publication, si vous passez par le menu "publier" du site web, vous ne devez pas décocher la case "Allow this precompiled site to be updatable". Sinon Visual Studio, en fait l'outil aspnet_compiler.exe utilisé en interne par Visual Studio, va précompiler le fichier .svc, c'est à dire remplacer son contenu par "This is a marker file generated by the precompilation tool, and should not be deleted!" et mettre le code dans le dossier bin. Malheureusement un fichier svc ne se comporte pas comme un fichier ASP.net classique, il faut impérativement que le fichier contienne la directive de page, sinon le service ne peut pas fonctionner.

image

Quelles sont les impactes de ce problème ? Lorsque vous accéderez au fichier .svc publié sur IIS, vous aurez une erreur 404 ou une page blanche. Si vous obtenez un "404 : The page cannot be found" en voulant accéder à un service WCF publié dans un fichier .svc, vérifier que vous n'avez pas précompilé le fichier.

Est-ce un bug de Visual Studio ? Oui ! j'ai effectué une recherche sur connect (le site de report de bug) et j'ai trouvé cette entrée : WCF service deployment problem when "allow this precompiled site to be updatable" is not selected 

Pour le contourner :

  • soit vous laissez coché la case "Allow this precompiled site to be updatable", ce que je ne vous conseille pas pour des raisons de perfs et sécurité du code. 
  • soit après publication vous copier le fichier .svc original non "précompilé", encore faut-il penser à le faire :-)
  • Soit vous n'incluez pas le fichier .svc dans votre projet web au niveau de Visual Studio, la ligne de code du fichier se trouvera alors seulement sur le serveur
  • [non testé] soit vous n'utilisez pas le publish, mais un web deployment project avec des directives de post publication afin de copier le bon fichier .svc
Posted: mardi 26 août 2008 19:49 par cyril
Classé sous : , , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01