Salve sto cercando di creare un mio servizio wcf da pubblicare su un mio sito che poi sarà utilizzato da un’applicazione silverligth.
Ho aperto visual studio e ho creato una Nuova Applicazione Servizi WCF
Modifico tuti i dati correttamente.
e creo le mie classi e la mia interfaccia.
Le mia classe
Imports System.Net
Imports Microsoft.Maps.MapControl
Imports System.IO
Public Class GoogleSearch
Implements IGoogleSearch
Private htpreq As HttpWebRequest
Private htresp As HttpWebResponse
Private _lista As New List(Of Indirizzo)
Public Sub New()
End Sub
Public Function GetIndirizziGetIndirizzi(Optional ByVal Indirizzo As String = "", Optional ByVal Citta As String = "", Optional ByVal Provincia As String = "") As List(Of Indirizzo) Implements IGoogleSearch.GetIndirizzi
_lista = New List(Of Indirizzo)
Dim url As New Uri("http://maps.google.com/maps/geo?q=" + Indirizzo + "," + Citta + "," + Provincia + "&output=xml")
htpreq = HttpWebRequest.Create(url)
Dim r = htpreq.GetResponse
Dim rstream As Stream = r.GetResponseStream
Dim documento As XDocument = XDocument.Load(New StreamReader(rstream))
Dim Risposta = documento.Descendants().Where(Function(x) x.Name.LocalName = "Response")
Dim Placemark = Risposta.Descendants().Where(Function(y) y.Name.LocalName = "Placemark")
For Each p In Placemark
Dim Coordinate = p.Descendants().Where(Function(z) z.Name.LocalName = "Point")
Dim stringpunto = Coordinate.Descendants.Where(Function(w) w.Name.LocalName = "coordinates").Value
Dim address As New Indirizzo
address.IndirizzoCompleto = p.Descendants.Where(Function(f) f.Name.LocalName = "address").Value
stringpunto = stringpunto.Replace(",", "-")
stringpunto = stringpunto.Replace(".", ",")
Dim Longitude As Double = CType(stringpunto.Split("-")(0), Double)
Dim Latitude As Double = CType(stringpunto.Split("-")(1), Double)
Dim coordinata As New Location(Latitude, Longitude)
address.Coordinate = coordinata
address.Indirizzo = p.Descendants.Where(Function(f) f.Name.LocalName = "ThoroughfareName").Value
address.Nazione = p.Descendants.Where(Function(f) f.Name.LocalName = "CountryName").Value
address.Regione = p.Descendants.Where(Function(f) f.Name.LocalName = "AdministrativeAreaName").Value
address.Provincia = p.Descendants.Where(Function(f) f.Name.LocalName = "SubAdministrativeAreaName").Value
address.Citta = p.Descendants.Where(Function(f) f.Name.LocalName = "LocalityName").Value
address.Cap = p.Descendants.Where(Function(f) f.Name.LocalName = "PostalCodeNumber").Value
_lista.Add(address)
Next
Return _lista
End Function
End Class
La mia Interfaccia
Imports Microsoft.Maps.MapControl
<ServiceContract()>
Public Interface IGoogleSearch
<OperationContract()>
Function GetIndirizzi(Optional ByVal Indirizzo As String = "", Optional ByVal Citta As String = "", Optional ByVal Provincia As String = "") As List(Of Indirizzo)
End Interface
<DataContract()>
Public Class Indirizzo
<DataMember()>
Public Property Indirizzo As String
<DataMember()>
Public Property IndirizzoCompleto As String
<DataMember()>
Public Property Nazione As String
<DataMember()>
Public Property Regione As String
<DataMember()>
Public Property Provincia As String
<DataMember()>
Public Property Citta As String
<DataMember()>
Public Property Cap As String
<DataMember()>
Public Property Coordinate As Location
Public Sub New()
End Sub
Public Sub New(ByVal IndirizzoCompleto As String, ByVal Coordinate As Location)
_IndirizzoCompleto = IndirizzoCompleto
_Coordinate = Coordinate
End Sub
Public Sub New(ByVal IndirizzoCompleto As String, ByVal Coordinate As Location, ByVal Indirizzo As String, ByVal Nazione As String, ByVal Regione As String, ByVal Provincia As String, ByVal Citta As String, ByVal Cap As String)
_IndirizzoCompleto = IndirizzoCompleto
_Coordinate = Coordinate
_Indirizzo = Indirizzo
_Nazione = Nazione
_Regione = Regione
_Provincia = Provincia
_Citta = Citta
_Cap = Cap
End Sub
End Class
Compilo il tutto e pubblico il serivzio su IIS ( cioè copio la cartella bin e il file svc con il file web config all’interno della cartella wwwroot di inetpub)
creo una nuova applicazione windows forms che va a consumare il mio servizio ma nel momento in cui creco di referenziare il mio servizio mi viene restituti il seguente errore.
Errore durante il download di 'http://localhost/googlesearch.svc'.
Richiesta non riuscita con codice di stato HTTP 404: Not Found.
I metadati contengono un riferimento che non può essere risolto: 'http://localhost/googlesearch.svc'.
Nessun endpoint in ascolto su http://localhost/googlesearch.svc in grado di accettare il messaggio. Ciò è spesso causato da un'azione SOAP o un indirizzo non corretto. Per ulteriori dettagli, vedere InnerException, se presente.
Errore del server remoto: (404) Non trovato.
Se il servizio è definito nella soluzione corrente, provare a compilare la soluzione e ad aggiungere nuovamente il riferimento al servizio.
Che cosa significa dove sto sbagliando?
Grazie per il vostro aiuto.
Francesco Valentinio