Ottenere l'url del web service

venerdì 29 maggio 2009 - 18.22

todero Profilo | Newbie

salve,

desideravo sapere come posso ottenere l'url del web service all'interno del codice del web service stesso per poterlo comunicare ad un client. Non trovo nessun metodo nè proprietà della classe System.Web.Services.WebService che mi restituisca l'url.
qualche suggerimento???

grazie,ciauzzzzzzz

freeteo Profilo | Guru

Ciao,
ma scusa come lo comunichi ad un client? Se il client ti richiama un metodo per saperlo, vuol dire che già deve sapere l'URL perchè il metodo corrisponde ad una chiamata HTTP (in realtà SOAP) quindi di fatto un URL...

Se vuoi saperlo sul client, ti basta avere una variabile di quel tipo, e quindi leggere la proprità "Url":
ContenutiService svr = new ContenutiService(); string indirizzo = svr.Url;
dove "ContenutiService" è il nome del riferimento web che ho aggiunto dentro a visual studio


se invece hai fatto tutto da design, sempre lato client, hai nei settings il valore disponibile:
string indirizzo = Settings.Default.MioriferimentoWeb_ContenutiService;
(ovviamente da te non sarà "MioriferimentoWeb_ContenutiService");

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

todero Profilo | Newbie

grazie per la risposta. mi sn spiegato male, io voglio comunicarlo ad un'applicazione che in futuro diverrà client, potrà sfruttare i miei web method proprio perchè conoscere l'url del mio web service.

Non mi interessa sapere come si determina lato client, è molto semplice, basta richiamare la proprietà della classe proxy.

spero di essermi spiegato ora, nel primo msg forse sono stato poco chiaro :-)


grazie,ciauz

Jeremy Profilo | Guru

Ciao Bruno.
Ma siamo al punto di partenza ..... la risposta è sempre la stessa, come fa un potenziale client ad invokare un webmethod di un servizio senza conoscerne l'url??
Non è polemica .... intendiamoci ..... ma forse dovresti spiegare il perchè vuoi fare una cosa del genere??
Giusto per capire lo scenario.
Ad ogni modo, se il servizio è il tuo, puoi dichiarare una variabile String assegnandogli tu a manina l'url del servizio e far restituire la variabile dal WebMethod.

Facci sapere...
Ciao

freeteo Profilo | Guru

Ciao,
continuo a non capire "come" lo comunichi al client....perchè se lo comunichi tramite WebService siamo al punto di prima, ossia per chiamarti (e chiederti l'indirizzo) il client deve cmq conoscerti e quindi di fatto farti una chiamata HTTP...
Perciò di fatto in un metodo del WebService ti basta recuperare il "HttpContext.Current.Request.Url"...solo che continuo a non capire se te lo chiedono già per invocarti il metodo, perchè dovresti tornarglielo tu?

Forse viene invocato da qualche altro client già configurato...non so cmq dentro ad un metodo del Webservice quella è la variabile che ti da l'url della richiesta e quindi di fatto del servizio stesso.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

chiccomox Profilo | Junior Member

Ciao,

secondo me non hai bisogno di avere l'url all'interno della tua applicazione perchè già ce l'hai: per accedere al tuo webservice, supponendo di aver creato la classe dentro il file service.asmx l'url è:

http://localhost:port/NomeWebProject/service.asmx?DISCO

il parametro DISCO permette di generare e mostrare il documento di discovery per il webservice. Se Vuoi vedere il file WSDL cambia DISCO in WSDL (ovviamente localhost se hai il webserver in locale!)

ciao,
Chiccomox
http://www.dotnetpertutti.com/
http://www.windowspertutti.com/

todero Profilo | Newbie

ok, intanto scusate il ritardo, ora mi spiego meglio:

in questo web service possiedo nel codice l'url di un web service che andrò a contattare, per notificargli il mio url in modo che esso possa utilizzare i miei servizi.


dunque io "negozio di una catena" avverto il mio server "collettore di servizi" che ci sono anch'io e che mi trova al seguente indirizzo, la gestione è quindi tutta dinamica.
Prima inserivo manualemente l'indirizzo da passare, ma visto che ormai questo indirizzo lo specifico durante l'installazione dell'applicazione sul mio web server(iis), volevo sapere se c'era un modo per ottenerlo direttamente dal codice.

spero di essere stato chiaro, grazie ancora, aspetto risposte

ciauzzzzzzzzzzzzzzzzzz
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5