Jag håller på att jobbar med Webservices och har några frågor.
Webservicen är enbart till för mig själv för att skicka information mellan två servrar krypterad. Jag har färdiga klasser för allting och tänkte i stort sätt bara bygga en wrapperklass för själva webservicen.
Visst ska det gå att skicka egna objekt som en array?
Exempel
Jag har i alla fall gjort en Webservice som skickar en array av objekt.
public class CarWS : System.Web.Services.WebService
{
public CarWS(){}
[WebMethod]
public Car[] GetCars()
{
List<Car> carColl = CarManager.GetAllCars();
Car[] cars = new Car[carColl.Count];
int counter = 0;
foreach (Car c in carColl)
{
cars[counter] = c;
counter++;
}
return cars;
}
}
När jag försöker anroppa denna ws så får jag ett felmeddelande om åtkomst nekad. När jag lägger till webreferencen och klickar på anroppa så får jag upp korrekt xml-data med alla bilar men i c# verkar jag inte kunna gå igenom objekten.
//anroppar webservicen från ett annat projekt
WS.CarWS wsObj = new WS.CarWS();
WS.Car[] carColl =wsObj.GetAll();
Visst ska det gå att skicka egna objekt som en array?
Visst kan du det, det viktiga är att dina objekt kan serialiseras.
Addeladde skrev:
När jag försöker anroppa denna ws så får jag ett felmeddelande om åtkomst nekad. När jag lägger till webreferencen och klickar på anroppa så får jag upp korrekt xml-data med alla bilar men i c# verkar jag inte kunna gå igenom objekten.
Åtkomst nekad låter som ett rättighetsproblem. En sak som man skall komma ihåg är att man inte kan flytta med sina rättigheter i 3 steg om man inte gör inställningar i ActiveDirectoryt och det är tydligen en komplicerad process.
Alltså om du kör din applikation som X och anropar webservicen som X så kommer din webservice INTE att anropa databasen som X. Så om du försöker göra det så får du problem. Om du inte gör det, så testa att köra den test-sida för din webservice som du kan komma åt på datorn där webservicen är installerad, men bara om du anropar din webservice från den datorn där webservicen är installerad, bara att öppna webläsaren och skriva in URL, så skall du får en test-sida.
Jag kör anroppet mot databasen med en connectionstring i webservicen.
Webservicen ligger just nu på samma dator som jag testkör den mot. Det konstiga är att när jag lägger till webreferensen så kan man klicka på anroppa på metoden och då får jag korrekt xml-data med resultat från databasen.
Men när jag med kod försöker köra metoden så får jag felmeddelandet:
Begäran misslyckades med Http-statusen 401: Access Denied
Check the Response property of the exception to determine why the request failed
Är det så att du har några rättigheter på din webservices, du kör inte med IUSR va?
Om jag fick gissa vilt så verkar det som du har satt rättigheter på webservicen som du uppfyller när du inne från VS anropar din webservice, men som du inte uppfyller när du starta ditt program. Kör du programmet under en annan användare?
Jag kör progammet under Visual Studio. Ett Windows form och jag kör det under debug läge. Webservicen ligger på en virtuell mapp och körs väl förmodligen under iusr