Avatar billede adagio Nybegynder
22. oktober 2004 - 11:31 Der er 18 kommentarer og
1 løsning

ASP.Net og Webservice

Hvordan er det lige man tilføjer en webservice til et ASP.Net projekt som ikke er skrevet i Visual Studio? Vi har en bog som bl.a. omhandler dette emne, men til nu har vi ikke kunnet få det til at virke, men vi er ret sikre på at det er en fejl i bogen, eftersom at vi allerede har fundet mange fejl og mangler

Vi har prøvet at søge på internetttet, men det eneste vi har fundet er hvordan man gør det i Visual Studio, hvilket vi ikke kan bruge til noget

Håber der er nogen der kan hjælpe...
Avatar billede arne_v Ekspert
22. oktober 2004 - 11:38 #1
Her kommer et eksempel:

Test.cs:

using System;
using System.Web.Services;

namespace test
{
    public class Foobar
    {
        private int iv;
        private string sv;
        public int Iv
        {
            get
            {
                return iv;
            }
            set
            {
                iv = value;
            }
        }
        public string Sv
        {
            get
            {
                return sv;
            }
            set
            {
                sv = value;
            }
        }
    }
    public class Test : WebService
    {
        [WebMethod]
        public Foobar TestIt()
        {
            Foobar res = new Foobar();
            res.Iv = 123;
            res.Sv = "ABC";
            return res;
        }
    }
}

bygges med:

csc /optimize+ /target:library Test.cs

Test.dll kopieres til bin dir

I normale dir laver man en Test.asmx med:

<%@ WebService Language="C#" Class="test.Test" %>

Så skulle det virke.
Avatar billede arne_v Ekspert
22. oktober 2004 - 11:39 #2
TestTest.cs:

using System;

class TestClass
{
    public static void Main(string[] args)
    {
        Test serv = new Test();
        Foobar tst = serv.TestIt();
        Console.WriteLine(tst.Iv + " " + tst.Sv);
    }
}
Avatar billede adagio Nybegynder
22. oktober 2004 - 11:54 #3
Men hvordan får vi fat i den webservice? Webservicen ligger ikke lokalt
Avatar billede adagio Nybegynder
22. oktober 2004 - 11:55 #4
Og vores webservice bliver skrevet i vb (og bliver som det eneste skrevet i visual Studio)
Avatar billede arne_v Ekspert
22. oktober 2004 - 12:33 #5
Ved depployment skal I som sagt uploade .asmx til roden og .dll til bin subdirectory.

Når I skal teste skal I bruge WSDL tool til at generere en stub med og så så ser
et test program ud ligesom TestTest.cs ovenfor.

Om det er lokalt eller remote betyder ikke rigtigt noget (når det er remote skal I nok bruge
FTP fremfor COPY til at flytte filer med).

Ovenstående er C# men det kan nemt omskrives til VB.NET !
Avatar billede adagio Nybegynder
22. oktober 2004 - 13:02 #6
Jeg har prøvet at oprette de filer som du har lavet koden til, men når jeg kører en bat fil med kommandoen som du også nævnet, så får jeg denne fejl:

Test.cs(2,14): error CS0234: The type or namespace name 'Web' does not exist in
        the class or namespace 'System' (are you missing an assembly reference?)
Test.cs(33,25): error CS0246: The type or namespace name 'WebService' could not
        be found (are you missing a using directive or an assembly reference?)
Test.cs(35,10): error CS0246: The type or namespace name 'WebMethod' could not
        be found (are you missing a using directive or an assembly reference?)
Avatar billede adagio Nybegynder
22. oktober 2004 - 13:05 #7
Og ja, vi bruger ftp til at overføre filerne til webstedet
Avatar billede arne_v Ekspert
22. oktober 2004 - 13:06 #8
Prøv eventuelt at tilføje:

/r:System.Web.dll

til kommandolinien
Avatar billede adagio Nybegynder
22. oktober 2004 - 13:13 #9
Gør ingen forskel... :(
Avatar billede adagio Nybegynder
22. oktober 2004 - 17:56 #10
Jeg prøvede lige at connecte til en webservice via en window application som jeg oprettede i Visual Studio, og det gav ingen problemer, men da jeg så prøvede at oprette et nyt asp.net projekt i Visual Studio kunne jeg ikke connecte. Dvs jeg kunne godt adde en web-reference, men når jeg kørte koden siger den:

Type 'WebReference.test1' is not defined.

Koden er:

<script runat="server">

Private lie as String
Sub Page_Load
        Dim lieMachine As WebReference.test1 = New WebReference.test1
        lie = lieMachine.getFact()
End sub
</script>


:confused:
Avatar billede arne_v Ekspert
22. oktober 2004 - 22:27 #11
Jeg har lige prøvet med VB.NET.

Test.vb:

Imports System
Imports System.Web.Services

Namespace test
    Public Class Foobar
        Private _iv As Integer
        Private _sv As String

        Public Property Iv() As Integer
            Get
                Return _iv
            End Get
            Set
                _iv = value
            End Set
        End Property

        Public Property Sv() As String
            Get
                Return _sv
            End Get
            Set
                _sv = value
            End Set
        End Property
    End Class

    Public Class Test
    Inherits WebService

        <WebMethod()> _
        Public Function TestIt() As Foobar
            Dim res As Foobar = New Foobar
            res.Iv = 123
            res.Sv = "ABC"
            Return res
        End Function
    End Class
End Namespace

build:

vbc /r:System.dll /r:System.Web.Services.dll /t:library Test.vb

virker fint
Avatar billede arne_v Ekspert
22. oktober 2004 - 22:37 #12
TestTest.vb:

Imports System

Class TestClass
    Public Shared Sub Main(ByVal args As String())
        Dim serv as Test = New Test
        Dim tst As Foobar = serv.TestIt
        Console.WriteLine(tst.Iv & " " & tst.Sv)
    End Sub
End Class

build:

wsdl /language:VB /out=Test.vb http://localhost/test.asmx
vbc /r:System.dll /r:System.Xml.dll /r:System.Web.Services.dll TestTest.vb
Avatar billede adagio Nybegynder
23. oktober 2004 - 12:32 #13
Prøv lige at vent... tror problemet egentligt ligger et andet sted end jeg først regnede med.

Problemet er at jeg lige nu har en komponent:

Namespace test
    Public Class Component1
        Inherits System.ComponentModel.Component

" Component Designer generated code "

        Public Shared Function getBah() As String
            Kode til at forbinde... koden virker fint i dem der code-behind klasser
        End Function
    End Class
End Namespace


Problemet er at jeg ikke lige ved hvad jeg skal skrive i aspx siden (ikke under code-behind) for at kalde den metode i komponenten. Jeg syntes at have prøvet alt, men uanset hvad jeg skriver, så kan den ikke finde komponenten når jeg kører siden (Lige nu er eksemplet lavet som projekt i vs.net)
Avatar billede adagio Nybegynder
23. oktober 2004 - 12:33 #14
Btw, det der eksempel kan jeg godt kompilere... :)
Avatar billede adagio Nybegynder
23. oktober 2004 - 13:02 #15
Ah, nu har jeg fundet fejlen til hvorfor jeg ikke kunne få forbindelse ved at bruge vs.net projekt. Øverst på aspx siden står der en linje som grundlæggende siger: "giv nogle funktioner jeg ikke kan bruge, og gør det umuligt at bruge de funktioner jeg skal bruge"

Nu må jeg se om jeg kan få forbindelse uden projekt...
Avatar billede adagio Nybegynder
23. oktober 2004 - 13:36 #16
Har nu fået det til at virke sammen med mit projekt (Lavede et nyt tomt asp.net projekt og tilføjede mine filer dertil, hvilket gør det lettere at tilføje en webservice, men uden at den ødelægger for meget af koden... ser det i hvert fald ud til...
Selvom jeg så ikke har kunnet bruge dit forsøg på at hjælpe mig, så får du alligevel points for at gøre et godt forsøg... jeg takker i hvert fald for forsøget :o)

Lader dog lige spørgsmålet stå indtil engang i morgen i tilfælde af at det alligevel giver problemer...
Avatar billede arne_v Ekspert
23. oktober 2004 - 14:17 #17
jeg ligger et svar så
Avatar billede arne_v Ekspert
06. november 2004 - 17:53 #18
så mangler du bare lige at acceptere svaret
Avatar billede adagio Nybegynder
06. november 2004 - 19:11 #19
Sorry, glemte det helt...
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