Avatar billede dennism Nybegynder
20. maj 2009 - 20:25 Der er 5 kommentarer og
1 løsning

WCF: Brug af WCF WebService

Jeg har lavet en WCF service og published den på nettet. Den indeholder bl.a. disse funktioner:
    public bool Login(string username, string password)
    public List<Tank> GetTanks()

Jeg har lavet en konsol applikation i C#, hvor jeg forsøger at bruge denne WCF WebService. Jeg har først tilføjet min WCF WebService som en service reference.

1) For at kunne få forbindelse, er jeg nødt til at sætte dette på test programmet:
    service.ClientCredentials.Windows.ClientCredential.UserName = @"USERNAME";
    service.ClientCredentials.Windows.ClientCredential.Password = "PASSWORD";
Det er jeg ikke interesseret i. Kan jeg forhindre det?

2) Når jeg kører test programmet og forsøger at køre nedenstående får jeg en fejl:
            Tank[] tanks = service.GetTanks();
Fejlen kan ses her: http://www.dennismadsen.com/uploads/WCF-service.jpg. Hvad kan det skyldes?

3) Mine Tank har en property der hedder Name. Jeg kan bl.a. se, at denne kommer til at ligge under "_Name" når jeg bruger min WCF WebService som en service reference. Hvorfor gør den det? Vil helst have, at den har de samme navne som de har i klassen.

4) Vælger jeg i stedet at tilføje min WCF Service som en web reference, så resulterer det i, at f.eks. vores login-metode pludselig tager to ekstra parametre (to "out bool") som kan bruges til at håndtere den værdi som bliver returneret. Se problemet her: http://www.dennismadsen.com/uploads/WCF-web.jpg

Hvad gør jeg galt? :)
Avatar billede arne_v Ekspert
20. maj 2009 - 20:55 #1
re 1)

Hvad vil du i.s.f.?
20. maj 2009 - 21:57 #2
1. Du angiver vel et sted i koden eller på serveren at du skal give dine windows credentials med. Tjek evt. din WCF binding!

2. Jeg kan ikke se fejlen, får en 404.

3. Det er fordi du ikke har et "backing store" feldt i din property. Din property ser garanteret nogenlund således ud:

Name{get; set;}

4. Du skal ikke bruge Web Reference med dine WCF services!
Avatar billede dennism Nybegynder
22. maj 2009 - 13:10 #3
Tak for jeres svar. Jeg havde ikke fået mail herfra, så troede ikke der var kommet svar. Mærkeligt.

1) i stedet for windows login vil jeg gerne, at der logges ind med en login-metode som jeg har lavet.

2) Der var et . i enden af billede-linket. Her kommer det igen:
http://www.dennismadsen.com/uploads/WCF-service.jpg

3) Jeg har LINQ til at lave mine klasser, som bruges som DTO-objekter. Er der en måde man kan bede LINQ om at gøre det anderledes?
Avatar billede dennism Nybegynder
22. maj 2009 - 13:21 #4
Måske jeg lige skulle poste min ServiceModel fra WCF Servicen:

  <system.serviceModel>
    <services>
      <service behaviorConfiguration="TSSServiceBehavior" name="TSSService">
        <endpoint address="" binding="wsHttpBinding" contract="ITONK.TSS.ITSSServiceProvider">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="TSSServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
Avatar billede dennism Nybegynder
24. maj 2009 - 15:36 #5
Kan I hjælpe mig videre her?
Avatar billede dennism Nybegynder
09. juni 2009 - 10:46 #6
.lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester