Avatar billede mach3 Nybegynder
10. september 2004 - 12:16 Der er 19 kommentarer og
1 løsning

Web services fra visual studio.net

Hej!

Er der en måde at generere en proxy fra visual studio .net? Således at man slipper for at anvende wsdl.exe fra kommandoprompten?
Avatar billede snepnet Nybegynder
10. september 2004 - 16:59 #1
jeps... højreklik på dit projekt, vælg "add web reference" og henvis til din webservice.
Avatar billede snepnet Nybegynder
10. september 2004 - 17:00 #2
(hvis du har lavet services selv i vs, vil du have en asmx-fil du bare kan henvise til)
Avatar billede mach3 Nybegynder
11. september 2004 - 09:08 #3
snepnet >> jeg har prøvet dit forslag, men det virker ikke. det er først npr jeg anvender wdsl.exe og derefter vbc.exe til at generere en .dll (som placeres i projektets bin mappe) at det virker.

laver vs ikke den dll idet man vælger "add web reference" eller er der nogle settings jeg kan have overset?

mvh
Avatar billede snepnet Nybegynder
11. september 2004 - 11:21 #4
det forstår jeg ikke. jeg har aldrig oplevet problemer med det, og heller ikke været ude for at skulle sætte specielle ting op for at det rullede.

hvordan konstaterer du at det ikke fungerer når du kun laver en web reference.
ved blot at tilføje referencen skulle der meget gerne laves en proxy i den dll du genererer fra projektet næste gang du bygger.
du kan eventuelt åbne den genererede dll-fil med disassembleren (du kan åbne programmet fra VS-Commandprompten ved at skrive ILDASM). så kan du se om du kan finde den forventede proxy i den.

kan du ikke vise et par kodelinier fra der hvor du prøver at bruge den ?
(altså instantiering og kald til et eller andet).
Avatar billede mach3 Nybegynder
11. september 2004 - 15:48 #5
Ok - her kommer det:
Avatar billede mach3 Nybegynder
11. september 2004 - 15:48 #6
asmx filen:

<%@ WebService Language="VB" Class="Calculator" %>

Imports System.Web.Services

public Class Calculator : Inherits WebService
  <WebMethod()> Public Function Add(intA As Integer, _
      intB As Integer) As Integer
      Return(intA + intB)
  End Function
End Class
Avatar billede mach3 Nybegynder
11. september 2004 - 15:48 #7
aspx filen:

<%@ Page Language="VB" %>

<script runat="server">
  sub Page_Load(Sender as Object, e as EventArgs)
      dim objCalc as new Calculator
     
      lblMessage.Text = objCalc.Add(1,5)
  end sub 
</script>

<html><body>
  The answer to 1 + 5 is:
  <asp:Label id="lblMessage" runat="server"/>
</body></html>
Avatar billede mach3 Nybegynder
11. september 2004 - 15:49 #8
Begge filer ligger under wwwroot
Avatar billede mach3 Nybegynder
11. september 2004 - 15:51 #9
Her er hvad jeg gør:
Jeg åbner vs og skriver aspx filen. Herefter vælger jeg "add web reference" og finder den ønskede asmx fil.

Endeligt taster jeg F5. Burde det så ikke virke?


Mvh
Avatar billede snepnet Nybegynder
11. september 2004 - 16:03 #10
Ok - fedt at det er så overskueligt eksempel du har.

Jeg kunne godt tænke mig at du lavede et lidt mere "live" eksempel, og med det mener jeg, at du splitter det op i to projekter. Ét projekt med din webservice, og ét projekt, hvor du har noget kode der konsumerer din service. Det vil jo ofte være sådan noget der er behov for under alle omstændigheder... Ellers er der ikke rigtig nogen grund til at bygge en service i første omgang.

Det er lidt fordi jeg er lidt usikker på hvad Calculater representerer i den kode du har sendt.... Jeg har lidt den mistanke, at det slet ikke er din proxy, men derimod den "rigtige" klasse.

Hvis du opretter 2 projekter i samme solution :
1) Et ASP.NET Web Service projekt.
2) Et ASP.NET Web Application projekt.

Du sørger så for i dit ASP.NET web application projekt - udelukkende at have en web reference til asmx-filen, og ikke nogen projektreferencer.

Så skulle du meget gerne kunne åbne den assembly som genereres fra dit ASP.NET web application projekt, og se at der er genereret en proxy til dig.
Desuden skulle det så også meget gerne virke - uden at du behøver at foretage dig yderligere end en almindelig build.

Jeg håber du kan få det til at makke ret, men råb op hvis der er ballade.... Jeg regner med at sidde her et stykke tid endnu.

Mvh
Avatar billede snepnet Nybegynder
11. september 2004 - 16:07 #11
hvis du laver ovenstående, vil du typisk for en reference der ligger navgivet som localhost, og du skal - får at "tage fat i den" fra koden instantiere en forekomst af din proxy ved :

localhost.Calculator calc = new localhost.Calculator();

mvh
Avatar billede snepnet Nybegynder
11. september 2004 - 16:07 #12
Undskyld :
Dim calc As localhost.Calculator = New localhost.Calculator ()
Avatar billede snepnet Nybegynder
11. september 2004 - 16:08 #13
(skriver normalt C# selv)
Avatar billede mach3 Nybegynder
11. september 2004 - 18:18 #14
snepnet >>

hvad skal jeg bruge web service applikationen til? det er som du skriver bare asmx filen jeg skal henvise til jo. det forstår jeg ikke helt :-)

har prøvet med localhost foran, men det hjalp ikke.

mvh
Avatar billede snepnet Nybegynder
11. september 2004 - 18:33 #15
Hvis du laver en web-reference, så skulle du meget gerne kunne se den i dit projekt - og som standard plejer referencen at blive tildelt navnet localhost når du henviser til en asmx-fil der ligger på localhost.
hvis den får et andet navn skal du selvfølgelig bruge det.

Den kode du har her :
dim objCalc as new Calculator

Tyder på at du "bare" opretter en instans af din Calculator klasse, hvilket du kan fordi den ligger i samme projekt og under samme namespace, men det gør ikke at du bruger webservicen når du kalder calculate..... Det er bare en helt almindelig metode, på et helt almindelig objekt du kalder.

Det er sansynligt at jeg tager fejl, og grunden til at jeg godt kunne tænke mig at du adskildte det i to forskellige projekter, var fordi at vi så kunne undgå at skulle være i tvivl om hvad du instantierer :o)

mvh
Avatar billede mach3 Nybegynder
11. september 2004 - 19:27 #16
ok, hvad er det som jeg skal lave i web service applikationen? jeg har jo asmx filen, hvis jeg kompilerer den får jeg det samme som når jeg åbner en browser og skriver stien til asmx filen. der kommer en beskrivelse af add metoden som man kan anvende.

nu er jeg heller ikke den store haj til .net, men alternativet er jo at jeg kan udføre det manuelt ved at anvende kommando linie værktøjerne wdsl.exe og vbc.exe

men er sikker på at vs godt kan udføre det, bliver ved med at prøve til det kommer til at virke :-)
Avatar billede snepnet Nybegynder
11. september 2004 - 20:11 #17
Hvis du bare følger det jeg skrev i 16:03:37 skulle det virke uden problemer - jeg er i hvert fald aldrig stødt på at det er kikset.
mvh
Avatar billede snepnet Nybegynder
02. oktober 2004 - 02:47 #18
hej mach3... fik du det til at virke ?
jeg smider et svar her hvis du kunne bruge det jeg skrev, men bare spørg hvis der stadig er ballade.
mvh
Avatar billede snepnet Nybegynder
09. oktober 2004 - 15:57 #19
mach3 ?
Avatar billede mach3 Nybegynder
15. juni 2007 - 21:16 #20
Tak for hjælpen. Beklager det sene svar.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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