Ho un'applicazione silverlight che utilizza alcuni webservice scritti da me.
Tutto OK in debug, ma quando installo l'applicazione questa non trova i servizi (li cerca su localhost:XXXX). Come posso cambiare l'indirizzo nel file ServiceReferences.config senza ricompilare? Ammesso che il problema sia quello.

Grazie
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Ace68 ha scritto:
Ho un'applicazione silverlight che utilizza alcuni webservice scritti da me.
Tutto OK in debug, ma quando installo l'applicazione questa non trova i servizi (li cerca su localhost:XXXX). Come posso cambiare l'indirizzo nel file ServiceReferences.config senza ricompilare? Ammesso che il problema sia quello.

Grazie

Ciao,
puoi dichiarare l'indirizzo dell'endpoint programmaticamente nel costruttore del proxy. Quindi potresti utilizzare le direttive di compilazione per valorizzarlo all'occorrenza con l'indirizzo più adatto.

Senza "toccare" il codice potresti creare delle procedure di pre-compilazione che vanno a cambiare gli url prima che siano compilati, appunto.

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
Intanto grazie per la risposta.
Mi pare più intelligente impostare dinamicamente gli indirizzi corretti.
In questo caso devo escludere dal progetto ServiceReference.ClientConfig .. giusto? E sostituirlo con una classe del tipo

public class ServiceUtil {
public static OrdiniServiceClient GetOrdiniServiceClient() {
BasicHttpBinding binding = new BasicHttpBinding(
Application.Current.Host.Source.Scheme.Equals("https", StringComparison.InvariantCultureIgnoreCase)
? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None);
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
return new PeopleServiceClient(binding, new EndpointAddress(
new Uri(Application.Current.Host.Source, "../OrdiniService.svc")));
}
}
Ho cambiato dinamicamente l'indirizzo di EndPoint del webservice .... molto più semplice di quanto pensassi.
Ora il servizio viene invocato correttamente.
Sul server (SBS 2008) non mi apre un database in Access con l'errore "Jet OleDb 4.0 is not register ...". Da quanto letto il motivo dipende dal fatto che questo driver non esiste nella versione 64bit, ma solo nella versione 32bit, quindi dovrei compilare il mio webservice a 32bit .... Ma come mai sul mio PC (Windows 7 Enterprise 64 bit) non ho lo stesso problema?
8 messaggi dal 06 settembre 2002
Cambiando i parametri nel serviceconfig.

----Messaggio originale----
Da: daemon@forum.aspitalia.com
Data: 15/03/2011 12.24
A: "silverlight@forum.aspitalia.com"<ulp@iol.it>
Ogg: [silverlight] Utilizzo di servizi da Applicazione Silverlight
Ho un'applicazione silverlight che utilizza alcuni webservice scritti da me.
Tutto OK in debug, ma quando installo l'applicazione questa non trova i servizi (li cerca su localhost XXX). Come posso cambiare l'indirizzo nel file ServiceReferences.config senza ricompilare? Ammesso che il problema sia quello.
Grazie




******
Per modificare la tua iscrizione: http://ml.aspitalia.com/



8 messaggi dal 06 settembre 2002
Dove lavoravo prima in SL avevo una serviceReference che puntava a diversi indirizzi a seconda della macchina in cui girava e funzionava bene. Era una bella architettura, ma la configurazione non spettava a me e non saprei darti ulteriori informzioni.

----Messaggio originale----
Da: daemon@forum.aspitalia.com
Data: 15/03/2011 14.35
A: "silverlight@forum.aspitalia.com"<ulp@iol.it>
Ogg: [silverlight] RE: Utilizzo di servizi da Applicazione Silverlight
Intanto grazie per la risposta.
Mi pare più intelligente impostare dinamicamente gli indirizzi corretti. In questo caso devo escludere dal progetto ServiceReference.ClientConfig ... giusto? E sostituirlo con una classe del tipo
public class ServiceUtil {
public static OrdiniServiceClient GetOrdiniServiceClient() { BasicHttpBinding binding = new BasicHttpBinding(
Application.Current.Host.Source.Scheme.Equals("https",
StringComparison.InvariantCultureIgnoreCase)
? BasicHttpSecurityMode.Transport :
BasicHttpSecurityMode.None);
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
return new PeopleServiceClient(binding, new EndpointAddress( new Uri(Application.Current.Host.Source,
"../OrdiniService.svc")));
}
}




******
Per modificare la tua iscrizione: http://ml.aspitalia.com/



Grazie per l'intervento, ma le risposte ovvie non mi servono.
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Ace68 ha scritto:
Ho cambiato dinamicamente l'indirizzo di EndPoint del webservice .... molto più semplice di quanto pensassi.
Ora il servizio viene invocato correttamente.
Sul server (SBS 2008) non mi apre un database in Access con l'errore "Jet OleDb 4.0 is not register ...". Da quanto letto il motivo dipende dal fatto che questo driver non esiste nella versione 64bit, ma solo nella versione 32bit, quindi dovrei compilare il mio webservice a 32bit .... Ma come mai sul mio PC (Windows 7 Enterprise 64 bit) non ho lo stesso problema?

Forse sul tuo pc stai usando il development server, che non "soffre" di questo problema.

In IIS invece, sotto gli advanced settings puoi abilitare le app 32 bit (enable 32 bit application) hai accesso alla macchina?

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.