2011-12-15 13 views
12

Ho un servizio WCF .Net 4.0 in esecuzione su IIS. Non ho specificato una porta quindi presumo che sia in esecuzione sulla porta 80. Devo installare il mio servizio su un server dove la porta 80 è già in uso e il tizio di rete mi ha chiesto di cambiare il mio servizio per funzionare sulla porta 443. Come fare Lo faccio? Suppongo che possa essere configurato in app.config ma non riesco a trovare un articolo che indichi come.Come eseguire il servizio WCF su una porta specifica

Ecco il mio app.config corrente:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

+1

È possibile mappare anoter porta del IIS. Basta fare clic destro sul tuo sito Web che ha il servizio WCF o se l'applicazione del servizio WCF è un sito Web nel tuo IIS, quindi selezionare le associazioni di modifica, ora è possibile modificare il http per ascoltare su una porta diversa invece di 80. Io sto usando – Rajesh

risposta

5

Suppongo che stiate eseguendo i vostri servizi sui protocolli net.tcp.

1) Modifica i tuoi attacchi (tasto destro Default Web Site selezionare Edit Bindings

enter image description here

2) Server Side Side

<service name="YouServiceNameSpace.YourService"> 
<endpoint address="" binding="netTcpBinding" bindingConfiguration="YourBinding" contract="YourContract" /> 
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" /> 
</service> 

3) client

<endpoint address="net.tcp://YourHost:443/YourServiceDirecotry/YourService.svc" 
    behaviorConfiguration="YourBehavior" binding="netTcpBinding" 
    bindingConfiguration="YourTcpBinding" contract="YourContract" 
    name="YourContractName" /> 
+0

Si noti che il punto 1 di cui sopra presuppone che sia stato avviato IISManager e che sia stata eseguita la connessione corrispondente al server su cui è in esecuzione la pagina Web. –

1

Normalmente si dovrebbe avere un nodo di servizi con almeno un nodo di servizio e ciascuno con endpoint, in cui è possibile specificare la porta. See more at: http://msdn.microsoft.com/en-us/library/ms733932.aspx

Ad esempio:

<services> 
    <service name="MyNamespace.myServiceType"> 
    <endpoint 
     address="net.tcp://0.0.0.0:8000" binding="basicHttpBinding" 
     bindingConfiguration="myBindingConfiguration1" 
     contract="MyContract" /> 
    </service> 
</services> 
+0

. Net 4.0 quindi è una configurazione semplificata. Vedi qui http://msdn.microsoft.com/en-us/library/ee530014.aspx Questo si aggiunge al problema in quanto non ho un servizio già configurato che posso modificare. –

+0

@SteveChadbourne È ancora possibile specificare un endpoint e un indirizzo, no? – MPelletier

+0

Non importa, ho capito. Sì, come si specifica semplicemente la porta ... hmmm ... – MPelletier

0

specificare la porta l'indirizzo del punto finale. Vedere la sezione "Definizione degli indirizzi degli endpoint nel codice" nell'articolo this per ulteriori dettagli.

+0

Funzionerà solo se si esegue l'auto-hosting del servizio WCF, altrimenti l'ambiente di hosting (IIS) imposterà l'indirizzo dell'endpoint del servizio a un grande estensione ... –

5

Possiamo farlo utilizzando il file .csproj del progetto WCF (nel caso o f utilizzando VS) .solo modificare il valore di questo tag XML nel file corrispondente:

per eseguire il servizio al numero di porta 60000,

<DevelopmentServerPort>60000</DevelopmentServerPort> 
Problemi correlati