Ciao,devo costruire per il mio capo un'applicazione che mi genera la rotta stradale tra 2 punti;
mi è stato suggerito di guardare Routing in virtual earth web service e sono partito da li.
Poi mi è stato detto che sul database aziendale ci sono tabelle relative ai nostri fornitori e come vedete ho popolato un dataset per mettere i nostri punti vendita.
Sembrava andasse tutto bene quando all'esecuzione del codice(Dim MyRouteServiceClient As New ServiceReference1.RouteServiceClient) MI GENERA Sysyem.InvalidOperationException, ho guardato un po in giro e ho letto che probabilmente il mio servizio è esposto su più binding ma dopo aver controllato il binding che faccio è unico.
Di seguito vi mostro quello che ho fatto:
codice:
Imports Prog_rotte.ServiceReference1
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim conn As New SqlClient.SqlConnection  
conn.ConnectionString = "Data Source=PC-STATION27;Initial Catalog=TXT2010;User Id=sa;Password=XXXX;"
conn.Open()
Dim t As New DataTable   
Dim sql As String = "select g.I,g.LAT,g.LON from CLIENTI  c inner join GEOPDV g on g.I=c.i"
Dim ad As New SqlClient.SqlDataAdapter(sql, conn)
ad.Fill(t)
ad.Dispose()
conn.Close() 
DataGridView1.DataSource = t
MsgBox((t.Rows).Count())
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Dim conn As New SqlClient.SqlConnection    
conn.ConnectionString = "Data Source=PC-STATION27;Initial Catalog=TXT2010;User Id=sa;Password=xxxx;"
conn.Open()
Dim t1 As New DataTable
Dim sql As String = "select g.I,g.LAT,g.LON from CLIENTI  c inner join GEOPDV g on g.I=c.i  "   
Dim ad As New SqlClient.SqlDataAdapter(sql, conn)
ad.Fill(t1)
ad.Dispose()
conn.Close()  
Dim lpdv As New List(Of objPdv)
For i As Int32 = 0 To t1.Rows.Count - 1     
For c As Int32 = i + 1 To t1.Rows.Count - 1
Dim ob As New objPdv
ob.pdvstart = t1.Rows(i)("i")        
ob._pdvstop = t1.Rows(c)("i")        
ob._lats = t1.Rows(i)("lat")
ob._latd = t1.Rows(c)("lat")        
ob._lons = t1.Rows(i)("lon")       
ob._lond = t1.Rows(c)("lon")       
lpdv.Add(ob)
'istanzio RouteRequest su ws
Dim ws As New ServiceReference1.RouteRequest
'istanzio Location su routeservice
Dim routeservice As New ServiceReference1.Location
'istanzio Credential su cr
Dim cr As New ServiceReference1.Credentials'=NewNet.NetworkCredential("magician@posta.it", "lemac_token")
cr.Token = "AoWTCRsPpF_wnaqvIclWhL3sSjUKgRhSpaxiA-hyyWmnNApYMuWpHXd02iUph8mY" 
ws.Credentials = cr
Dim waypoints As ServiceReference1.Waypoint() = New ServiceReference1.Waypoint(2){}
waypoints(0) = New ServiceReference1.Waypoint()
waypoints(0).Location = New ServiceReference1.Location()
waypoints(0).Location.Latitude = (t1.Rows(i)("lat"))
waypoints(0).Location.Longitude = (t1.Rows(i)("lon"))
waypoints(1) = New ServiceReference1.Waypoint()
waypoints(1).Location = New ServiceReference1.Location()
waypoints(1).Location.Latitude = (t1.Rows(c)("lat"))
waypoints(1).Location.Longitude = (t1.Rows(c)("lon"))
ws.Waypoints = waypoints 
Dim myrouteop As New ServiceReference1.RouteOptions
myrouteop.Mode = ServiceReference1.TravelMode.Driving
myrouteop.Optimization = ServiceReference1.RouteOptimization.MinimizeTime
myrouteop.TrafficUsage = ServiceReference1.TrafficUsage.None
ws.Options = myrouteop
'qua da errore[/COLOR] 
Dim MyRouteServiceClient As New ServiceReference1.RouteServiceClient
Dim myRouteResponse As New ServiceReference1.RouteResponse
myRouteResponse = MyRouteServiceClient.CalculateRoute(ws)
Dim myRouteLeg As New ServiceReference1.RouteLeg
Dim directions As String = ""
MsgBox(myRouteResponse.Result.Legs.Length)
Dim t2 As New DataTable
t2.Rows.Add(DataRow)
tCell0.Text = ""
For q As Int32 = 0 To q < (myRouteResponse.Result.Legs.Length)
myRouteLeg = myRouteResponse.Result.Legs[q]
For p As Int32 = 0 To p < (myRouteLeg.Itinerary.Length)
directions = directions + myRouteLeg.Itinerary[p].Text
'+ " (" + Math.Round(myRouteLeg.Itinerary[p].Summary.Distance, 2) + " kilometres, "
'+ (myRouteLeg.Itinerary[p].Summary.TimeInSeconds / 60) + "mins)"     
'tCell0.Text += directions           
Next
Next
MsgBox(lpdv.Count)
DataGridView2.DataSource = lpdv
End Sub End Class Public Class objPdv
Dim _pdvstart As String
Public _pdvstop As String
Public _lats As Decimal
Public _lons As Decimal
Public _latd As Decimal
Public _lond As Decimal
Public Property pdvstart() As String
Get
Return _pdvstart
End Get
Set(ByVal value As String)
_pdvstart = value
End Set
End Property
End Class
C'è qualcuno che può dirmi dove sbaglio oppure come risolvere questo errore?
Grazie mille in anticipo