Hej, Hej, Hej, Kan du inte ladda up klassen som du vill exponera så kan jag kolla på den (Eller en prototyp med alla funktionsheaders samt attribut så kan jag kolla). Alternativs om du har WSDL från den tidigare versionen så kan den berätta lite om problemet. Hej,Problem med att lägga till en webreferens till Web Service
jag har en Web Service som jag har skrivit. Under utvecklingsfasen har jag kört lokalt och arbetat mot min Web Service allt har fungerat perfekt. Men nu har jag flyttat den till min ISP's webserver.
Problemet som jag har är att jag inte kan skapa en korrekt webreferens till min Web Service ifrån ett nytt C# projekt. Visual Studio.NET slänger ifrån sig ett felmeddelande när jag lägger till min Web Service:
"DiscoCodeGenerator unable to initialize code generator. No code generated."
Spontant tror jag att jag har missat att lägga med någon fil. Tex så skapade VS.NET inte någon DISCO eller wsdl fil automatiskt utan jag fick generera dessa manuellt via "disco.exe".
Om jag skriver in URL:en till min Web Service (dvs adressen till asmx filen) så kommer en websida upp som beskriver tjänsten. Så det verkar som om den hittar assemblyn (dll:en)... Jag tror inte heller att det är några problem med webservern
då alla andra asp.net projekt går att köra utan problem.
Enligt vad jag har kunna läsa i Microsofts nyhetsgrupper så verkar detta felet uppstå ganska ofta, i vilket fall är det många som har råkat ut för det...
Jag har lagt med följande filer till den nya webservern:
*.dll (assemblyn ligger i bin katalogen)
*.disco
*.wsdl
*.asmx
web.config
Global.asax
Tack på förhand.
Mvh
/MattiasSv: Problem med att lägga till en webreferens till Web Service
Det enda du behöver lägga på produktionsservern är .asmx fil samt den kompilerade dlln med aktuell codebehind till denna. (web.cofig och global.asax tillkommer om du använder dessa)
Den enda gången du behöver tillgång till wsdl är egentligen när du skall generera wsproxyn till klienten. Det är detta som händer när du sätter en webreference i visual studio.net. Ett tips är att använda wsdl.exe för att få bättre kontroll (add webreference fungerar inte alltid). Följande kommer att generera en proxy i c# för en webshop endpoint:
<code>
wsdl /o:proxy.cs /l:cs http://localhost/weblab/webshop.asmx?wsdl
</code>
Om du redan har proxyn (som i ditt localhost fall) och vill styra om denna till en ny server så behöver du ju inte lägga upp en ny webreference/generera ny proxy utan bara styra om den till ny url enligt följande,
(Givet att proxyklassen heter webshop)
<code>
webshop wsProxy = new webshop();
wsProxy.Url = "http://localhost/weblab/webshop.asmx";
Debug.WriteLine(wsProxy.PurchaseItem("TellyTubby"));
</code>
Du kan givetvis göra samma sak med hjälp av IDE:n och add webreference eller varför inte ändra den hårdkodade URLn i proxyn ;). Sätta URL Behavior till Dynamic och sätta aktuell URL i web.config. Men du kommer att gå på en nit förr eller senare om du gör på det sättet...
/mickeSv: Problem med att lägga till en webreferens till Web Service
tack för ditt svar.
Jag testade att generera om wsproxyn med hjälp av det exempel av cmdline som du skrev i ditt svar. Men tyvärr så ger det samma resultat som jag får i VS.NET, dvs att
den vägrar att generera kod.
wsdl.exe slänger ur sig följande meddelande:
"Warning: no classes were generated."
Mvh
/MattiasSv: Problem med att lägga till en webreferens till Web Service
Sv: Problem med att lägga till en webreferens till Web Service
tack så mycket för all hjälp.
Problemet visade sig vara relaterat till Code Access Security (CAS) vilket min
Web Service använder sig av för att kontrollera att den som anropar tjänsten har
rätt behörighet. Web Service verkar inte klara av CAS i den bemärkelsen som jag använder det. När jag plockade bort samtliga CAS kontroller så fungerade det utmärkt att skapa en referens mot tjänsten.
Mvh
/Mattias