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

C# Discussion :

Appeler une dll dans Excel (app.config non trouvé) [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Appeler une dll dans Excel (app.config non trouvé)
    Bonjour,

    J'ai besoin de votre aide svp, je vous explique tout.

    j'ai développé une dll en C#, cette dll fait appel à des web services, récupères des données, que je trie et que je met dans un tableau que je renvoie.

    La dll sera utilisée dans Excel et Acces, donc pour tester j'ouvre un fichier excel, j'ajoute la référence (tlb) et ensuite j'instancie une variable pour appeler les fonction de la dll, jusqu'à là tout va bien.

    quand je fais appel à l'une des fonction de traitement basique qui n'a pas besoin du fichier app.config, tout marche bien, mais quand je fais appel aux fonctions liées aux appels de web service, il m'affiche le message suivant.

    "Impossible de trouver un élement de point de terminaison par défaut qui fait référence au contrat "xx" dans la section de configuration du client serviceModel...."

    pour moi le problème vient du fait que la dll ne retrouve pas le fichier app.config, j'ai essayé de mettre le app.config au meme endroit que le fichier excel, rien n'y fait ça ne marche pas.

    merci pour votre aide, je reste à dispo, pour plus d'explication.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Le app.config est un fichier de configuration d'application. Je ne suis pas certain que tu puisse y accéder aussi facilement depuis une simple dll.
    Par contre, tu peux te connecter à ton service en configurant via le code C# ton point de terminaison.
    Regardes du côté de la
    msdn.
    Bonne chance

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour silvinus,

    je ne comprends pas, ça veut dire que je dois me connecter au point de terminaison dans la dll avant de la passer dans Excel?

    peut tu me donner plus d'indication stp

    merci pour toute aide

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Dans le app.config, tu dois avoir une balise qui ressemble à peu de chose prêt à ça :
    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
    <system.serviceModel>
        <bindings>
          <netTcpBinding>
            <binding name="NetTcpBinding_AlertService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
              <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
              <security mode="None">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
                <message clientCredentialType="Windows"/>
              </security>
            </binding>
          </netTcpBinding>
        </bindings>
        <client>
          <endpoint address="net.tcp://localhost:5000/Service" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_AlertService" contract="MessageService.AlertService" name="NetTcpBinding_AlertService">
            <identity>
              <dns value="localhost"/>
            </identity>
          </endpoint>
        </client>
      </system.serviceModel>
    Ce sont les informations dont à besoin ta dll pour se connecter à ton webservice et récupérer les métadonnées (voir WSDL).
    Si tu n'a pas accès à l'app.config, Tu peux réécrire ces informations en c# dans ta dll. Au moment ou tu instancie ton service dans ta dll, regarde les surcharge du constructeur, tu dois pouvoir faire passer un objet de type Binding. Regarde le lien de la msdn pour le configurer. Si ca ne marche toujours pas c'est que le webservice n'écoute pas sur l'URI que tu demandes.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    OK très bien, merci beaucoup silvinus

    je vais essayé ça et je te tiendrais au courant

    à bientot

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    bonjour a tous, pour ceux que ça intéresse, voilà la solution :

    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
    40
    41
    42
    43
    44
    45
     
     public void RunServiceMethod() {
     BasicHttpBinding binding = new BasicHttpBinding();
     binding.Name = "Service1SoapBinding";
     binding.CloseTimeout = System.TimeSpan.Parse("00:01:00");
     
     binding.OpenTimeout = System.TimeSpan.Parse("00:01:00");
     binding.ReceiveTimeout = System.TimeSpan.Parse("00:10:00");
     binding.SendTimeout = System.TimeSpan.Parse("00:01:00");
     
     binding.AllowCookies = false;
     binding.BypassProxyOnLocal = false;
     binding.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.StrongWildcard;
     
     binding.MaxBufferSize = 65536;
     binding.MaxBufferPoolSize = 524288;
     binding.MaxReceivedMessageSize = 65536;
     
     binding.MessageEncoding = System.ServiceModel.WSMessageEncoding.Text;
     binding.TextEncoding = System.Text.Encoding.UTF8;
     binding.TransferMode = System.ServiceModel.TransferMode.Buffered;
     
     binding.UseDefaultWebProxy = true;
     binding.ReaderQuotas.MaxDepth = 32;
     binding.ReaderQuotas.MaxStringContentLength = 8192;
     
     binding.ReaderQuotas.MaxArrayLength = 16384;
     binding.ReaderQuotas.MaxBytesPerRead = 4096;
     binding.ReaderQuotas.MaxNameTableCharCount = 16384;
     
     binding.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.None;
     binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
     binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
     
     binding.Security.Transport.Realm = "";
     binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
     binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
     
     
     EndpointAddress endpoint = new EndpointAddress("http://MyServiceURL.com?wdsl");
     
     Service1Client client = new Service1Client (binding, endpoint);
     
     client.CallMethod(parameter1, Parameter2,...)
    }

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

Discussions similaires

  1. Appeler une Dll dans une autre Dll.
    Par cdumargu dans le forum C#
    Réponses: 1
    Dernier message: 07/02/2012, 13h13
  2. Réponses: 4
    Dernier message: 20/12/2011, 12h00
  3. Utiliser une fonction d'une DLL dans Excel
    Par archonte dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2007, 23h14
  4. Appel d'une DLL dans une servlet
    Par blan dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/02/2007, 18h35
  5. Appel d'une Dll dans le dossier courant.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/07/2006, 21h00

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