IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Communication Foundation .NET Discussion :

Publier une application WCF sur IIS et le rendre accessible sur internet


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut Publier une application WCF sur IIS et le rendre accessible sur internet
    Bonjour à tous,

    J'ai développé une application WCF permettant d'activer une clé de licence.

    Je l'ai déployé sur un serveur IIS 7.5 en créant un site web et un répertoire virtuel. En local, tout fonctionne correctement mais pas à distance.

    Pour expliquer un peu, le serveur IIS est derrière une box orange avec une redirection de port. Lorsque l'on test dans un navigateur en rentrant l'IP publique, le numéro de port et le nom du service, la page du service s'affiche correctement mais le lien pour afficher le wsdl contient le nom du serveur : http://serverName:35000/ServiceName.svc?wsdl donc lorsque l'on clique dessus, impossible de résoudre le nom local de la machine ce qui est normal. Si je garde l'adresse de la page et que j'ajoute ?wsdl à la fin, j'ai bien le wsdl qui s'affiche mais toujours avec le nom du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <wsdl:service name="ServiceName">
      <wsdl:port name="BasicHttpBinding_IServiceName" binding="tns:BasicHttpBinding_IServiceName">
    <soap:address location="http://serverName:35000/ServiceName.svc"/>
    </wsdl:port>
    </wsdl:service>
    Ma question est comment faire pour que le wsdl généré contienne l'IP publique de la box et non le nom du serveur ?

    Après de nombreuses recherches, j'ai trouvé qu'il fallait modifier le binding dans IIS (modifier les liaisons et ajouter un nom d'hôte). Mon problème est que si en nom d'hôte je tape l'IP publique, j'obtiens une erreur Invalid Hostname en chargeant la page. La seule piste que j'ai trouvé est de saisir une url dans la case nom d'hôte (propriétés du site web dans IIS) donc d'avoir une url et un nom de domaine valide ce qui n'est pas mon cas.

    Merci pour vos expériences et votre aide

    web.config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <configuration>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.serviceModel>
        <services>
          <service name="myNamespace.ServiceName.svc">
            <endpoint address="http://xxx.xxx.xxx.xxx:35000/myNamespace/ServiceName/" binding="wsHttpBinding" contract="myNamespace.IServiceName">
              <identity>
                <dns value="xxx.xxx.xxx.xxx" />
              </identity>
            </endpoint>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    Bon après deux jours de prise de tête, merci à un utilisateur du forum IIS.

    Je n'avais pas mis le mex endpoint pensant que l'exposition des metadata avec <serviceMetadata httpGetEnabled="true"/> dans le behavior suffisait.

    En ajoutant le endpoint mex, tout marche parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/03/2015, 18h15
  2. Publier une application web sur le réseau intranet
    Par jacko842 dans le forum Apache
    Réponses: 2
    Dernier message: 21/03/2012, 17h15
  3. Publier une application sur mac store
    Par fghjk dans le forum Apple
    Réponses: 2
    Dernier message: 16/10/2009, 17h10
  4. publier une application ASP.NET sur VS 2005
    Par insane_80 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/09/2008, 14h43
  5. Impossible de publier une application sur JBoss 4.2.2
    Par Invité dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 01/07/2008, 08h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo