Asp.net - comment changer dynamiquement l'adresse d'un webservice via le web.config

Contenu du snippet

Dans le cadre d'une architecture idéale .NET, c'est-à-dire :
- Une machine de développement (celle du développeur).
- Une machine d'intégration (celle qui permettra de valider la solution développée).
- Une machine de production (celle qui est connue du public).

Un problème se présente lors de développement d'applications faisant accès à des WEBServices, en effet, entre ces trois machines, les configurations où les données ne sont pas les mêmes et ne sont pas forcément adaptées au référencement du WebService en Dur dans la solution.

Ainsi il est très pratique de pouvoir simplement, par la modification d'une clé dans ce WEB.CONFIG, changer l'adresse de ce WebService.

Ainsi par exemple, sur la machine de développement on aura :
- http://localhost/NomDuWebservice/Fichier.asmx

Sur la machine d'intégration :
- http://ServeurIntegration/NomDuWebservice/Fichier.asmx

Et sur la prod :
- http://ServeurWEBProd/NomDuWebservice/Fichier.asmx

Et si les architectures sont multiserveurs (un Web, un pour Webservices, ... on pourra adapter facilement).

Source / Exemple :


Dans Visual Studio.NET, on référence le WebService local que l'on voit alors 
apparaître dans la liste des "Web References" (en général avec le nom
LocalHost), une fois ceci fait, on Modifie ce nom (afin qu'il soit plus parlant 
surtout s'il on en a plusieurs) en faisant "Bouton Droit > Renomer".

Une fois ceci fait : on ouvre le fichier Reference.vb qui se trouve sous
reference.map (penser à afficher tous les fichiers du projet).

Dans ce fichier on se place à la ligne Sub New()

On a cette version d'origine :

' ------------------
Public Sub New()
  MyBase.New
  Me.Url = "http://localhost/Monwebservices/MonService.asmx"
End Sub
' ------------------

Il suffit donc de changer la ligne URL par ceci :

' ------------------
  Me.Url = ConfigurationSettings.AppSettings("MonServiceDanWebConfig")
' ------------------

Dans le WEB.CONFIG, on ajoute alors la clé donné dans le reference.vb

' ------------------
<configuration>
<appSettings>
.....
  <add key="MonServiceDanWebConfig" value="http://localhost/Monwebservices/MonService.asmx"/>
....
</appSettings>
<system.web>
.....
</system.web>
</configuration>
' ------------------

Ainsi sur chaque machine où on placera ce projet, on devra si besoin changer l'URL du Webservice adaptée à celle-ci.

Conclusion :


Bon Coding.

-----------------------------------

[Article cité sur le Flash Microsoft MSDN France] :
http://www.microsoft.com/france/msdn/abonnements/flash/archives/030401.html#L21

-----------------------------------

Romelard Fabrice (Alias F___)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.