2 messaggi dal 22 maggio 2006
ciao a tutti
sono 2 giorni che sto impazzendo con il segente problema  :

Abbiamo sviluppato e testato correttamente ( ambiente di sviluppo) un nuovo servizio WCF in azienda.
Il nostro server di produzione , in DMZ , è posizionato dietro ad un firewall che redirige l'ip esterno ( IPEXT) su quello interno ( IPINT)

http://IPEXT/App/Servizio.svc?wsdl

ma gli schema locations presenti nel wsdl sono errati perchè puntano al server interno.

.....
<wsdl:import namespace="http://IPExt/App/" location="http://IpINT/App/Servizio.svc?wsdl=wsdl0" />
- <wsdl:types>
- <xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://IpINT/App/Servizio.svc?xsd=xsd0" namespace="http://tempuri.org/" />
</xsd:schema>
.....

infatti se includo il servizio da un client nella rete aziendale funziona ( giustamente ) , se lo faccio da un client non nella intranet ...NON FUNZIONA ( giustamente lui non sa chi è quel nome di rete interno)

come posso fare a forzare lo schemalocation nel mio file Web.config del servizio?

Spero di essere stato chiaro

Grazie per l'aiuto
CIao
Luke

Naturalmente il test a cui accennavo all'inizio è stato fatto nella intranet
Modificato da NTTLuke il 09 gennaio 2009 17.06 -
Domanda interessante
Hai due strade:
- salvare tutto il wsdl da browser, compreso di xsd che importa ecc. Modificare gli uri in essi contenuti. Pubblichi questi file dove vuoi, raggiungibili dall'esterno. Specifichi tramite ServiceBehavior o tramite /serviceBehaviors/behavior/serviceMetadata con l'attributo externalMetadataLocation il wsdl alla quale puntare, mettendo appunto l'uri pubblico al wsdl.

- creare manualmente il ServiceHost o tramite ServiceHostFactory in modo da indicare manualmente qual'è l'indirizzo sulla quale il tuo servizio resta in ascolto; di conseguenza cambieranno anche gli uri del wsdl autogenerato. Guarda per esempio qua
http://blogs.msdn.com/rampo/archive/2007/06/15/supporting-multiple-iis-bindings-per-site.aspx

Ciao

Il mio blog
Homepage
2 messaggi dal 22 maggio 2006
Grazie Cristian
temporaneamente ho applicato la soluzione 1 e funziona
adesso proverò a implementare la 2.
Ma secondo te è un problema che dovranno sistemare oppure è cosi "by design" ?
O forse è stato pensato espressamente per IIS 7 ( sul quale non ho approfondito) che mette a disposizione qualche barbatrucco?

Ti ringrazio cmq per l'aiuto
ciao

Luca
Prova anche ad usare solo il baseAddress
http://www.winfxitalia.com/script/86/Specificare-Binding-Utilizzare-IIS-Servizi-WCF.aspx

Comunque è così by design e non credo cambierà. Per prima cosa occorre che ogni endpoint ascolti su un solo indirizzo o più indirizzi a seconda del binding e questi vengono preso automaticamente dalla macchina (non può sapere che sei in una lan ecc).
Devi considerare che in teoria un servizio non è sempre esposto via http e lo standard per conoscere il contratto non è più il wsdl, o meglio si è affiancata WS-Metadataexchange. Inoltre la generazione del wsdl è un piacere che ci fanno. In teoria andrebbe fatto a manina e passato a chi vuole usarlo

Ciao

Il mio blog
Homepage

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.