22. oktober 2004 - 11:31Der 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
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; } } }
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?)
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>
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
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
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)
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...
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...
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.