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

Services Web Discussion :

WCF OperationContract and specified parameter


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut WCF OperationContract and specified parameter
    Bonjour,
    Je vais tout d'abord exposer du départ ce que j'ai entrepris.

    Mon but est de faire un site web relié à une base de données SQL SERVER.

    Dans la version actuelle, toute mes méthodes de lecture et de MAJ des données sont placées dans une DLL que j'utilise via mes différents outils périphériques (un extranet, un intranet , et une application Winform).

    Ainsi, toute modification de structure de la SGBD nécessite une adaptation de la DLL.

    L'idée d'utiliser un service web data me parait une solution plus souple pour l'architecture de mon projet.

    J'ai créé un projet de type WEB SERVICE WCF à partir de VS2010 (Win 7(x64)).

    J'ai alimenté le fichier Interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Interface IMBLib
     <OperationContract()>
         Function GetLangue(<br/> ByVal idLangue As Int32 _<br/>, ByVal ORDER As String, ByVal WHERE As String) As DataSet<br/>
    End Interface
    Puis la CLASS :

    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
    28
    Option Explicit On
    Option Strict On
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.IO
    Imports System.IO.Compression
    Imports System.ComponentModel.Component
    Imports System.Drawing
    Imports System.Drawing.Drawing2D
    Imports MBThumb
     
    Public Class MBLib
     Implements IMBLib
     Dim acc As AccesBase
     Public Sub New()
      acc = New AccesBase(ConfigurationManager.ConnectionStrings("MBConnectionString").ConnectionString)
     End Sub
     
     Protected Overrides Sub Finalize()
      acc.Dispose()
      acc = Nothing
      MyBase.Finalize()
     End Sub
     
       Function GetLangue( _<br/>    ByVal idLangue As Int32 _<br/>    , ByVal ORDER As String, ByVal WHERE As String) As DataSet Implements IMBLib.GetLangue<br/>        Dim strSQL As String<br/>        strSQL = "SELECT * FROM Vtbl_AS_Langue"<br/>        strSQL = strSQL & " WHERE 1=1 "<br/>        If idLangue <> 0 Then<br/>            strSQL = strSQL & " AND idLangue = " & idLangue<br/>        End If
     
            If WHERE <> "" Then<br/>            strSQL = strSQL & " AND " & WHERE<br/>        End If<br/>        If ORDER <> "" Then<br/>            strSQL = strSQL & " ORDER BY " & ORDER<br/>        Else<br/>            strSQL = strSQL & " ORDER BY CodeLangue"<br/>        End If<br/>        Return acc.GetDataSet(strSQL)<br/>    End Function<br/> End Class

    Le WEB.Config du service est :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?xml version="1.0"?>
    <configuration>
     <connectionStrings>
     <add name="MBConnectionString" connectionString="Data Source=MB-W764\SQLEXPRESS;Initial Catalog=Chastra_ADM;Integrated Security=True"/>
     </connectionStrings>
     
     <system.web>
    		<compilation debug="true" strict="true" explicit="true" targetFramework="4.0">
    			<assemblies>
    				<add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
    		<pages>
    			<namespaces>
    				<add namespace="System.Runtime.Serialization"/>
      <add namespace="System"/>
      <add namespace="System.ServiceModel"/>
      <add namespace="System.ServiceModel.Web"/>
    			</namespaces>
    		</pages>
    	</system.web>
     
     <system.serviceModel >
     
    		<behaviors>
    			<serviceBehaviors>
    				<behavior >
    					<!-- Pour éviter la divulgation des informations sur les métadonnées, définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement -->
    					<serviceMetadata httpGetEnabled="true"/>
    					<!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Définissez-la sur false avant le déploiement pour éviter la divulgation des informations d'exception -->
    					<serviceDebug includeExceptionDetailInFaults="true"/>
    				</behavior>
    			</serviceBehaviors>
     </behaviors>
     
    		<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
    	</system.serviceModel>
    	<system.webServer>
    		<modules runAllManagedModulesForAllRequests="true"/>
    	</system.webServer>
    </configuration>
    Côté client, j'ai utilisé un site WEB ASP.Net auquel j'ai ajouté une web référence sur le service précédent sous le nom "WCF_Lib".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
     
      Dim acc As New WCF_MBLib.MBLib
      Dim dsLngSite As DataSet = acc.GetLangue(0, False, "", "(Site=1)")
     
    ...
     
      dsLngSite.Dispose()
      acc.Dispose() : acc = Nothing
     End Sub
    A ce niveau, GetLangue n'a plus les mêmes paramètres que ceux déclarés dans le service.
    Dans l'explorateur de classe je vois ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Function GetLangue(ByVal idLangue As Integer, ByVal idLangueSpecified As Boolean, 
    ByVal ORDER As String, ByVal WHERE As String) As System.Data.DataSet
    idLangueSpecified a été ajouté

    Pourquoi? et comment résoudre ce problème s'il vous plait?

    Merci

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ajoute une Service Reference et non pas une Web Reference. Une Service Reference est spécialement prévue pour accéder à un service WCF.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. [WCF]linq.Expressions as parameters.
    Par zeavan dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 09/06/2010, 10h12
  2. Réponses: 3
    Dernier message: 20/05/2008, 15h50
  3. Réponses: 0
    Dernier message: 10/04/2008, 10h41
  4. Réponses: 8
    Dernier message: 10/01/2008, 13h50
  5. [FPDF] error: Image file has no extension and no type was specified:
    Par demsbf dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 28/09/2007, 15h47

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