2013-08-06 19 views
12

Ho creato un nuovo servizio WCF host IIS utilizzando webHttpBinding attualmente in esecuzione su IIS Express sul mio computer di sviluppo e quando provo a "Aggiungi riferimento servizio" il servizio è stato creato correttamente e il file Reference.cs sembra soddisfacente, ma i file web.config o app.config non vengono aggiornati.VS2012 Aggiungi riferimento servizio non aggiornando il file di configurazione

Nessun avviso o messaggio di errore ricevuto.

Sia il servizio che il cliente hanno come target .Net 4.5.

Servizio config

<system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding name="webInteropSecureBinding" allowCookies="false" maxBufferPoolSize="2097152" maxBufferSize="2097152" maxReceivedMessageSize="2097152"> 
      <security mode="Transport" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="PsmDataProvider.PsmProvider" behaviorConfiguration="SecureRest"> 
     <clear /> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="webInteropSecureBinding" name="PsmProvider" contract="PsmDataProvider.IPsmProvider" listenUriMode="Explicit" behaviorConfiguration="webHttpBehavior" /> 
     <endpoint address="mex" binding="mexHttpsBinding" name="mex" contract="IMetadataExchange" listenUriMode="Explicit" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="https://localhost:44300/PsmProvider/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="SecureRest"> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webHttpBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

configurazione client

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

Client Service Reference

enter image description here

Dopo alcune indagini ho trovato queste domande StackOverflow

Question 1

Question 2

Question 3

e questo post

Blog post

Ciascuno dei ref sopra er allo stesso problema di deselezionare il flag "Riutilizzare i tipi negli assembly di riferimenti" che ho fatto.

enter image description here

Il problema è che non risolvere il problema. Ho provato ad aggiornare e cancellare e ricreare il riferimento al servizio ma non aggiorna mai il file di configurazione.

Domanda

È questo un problema con la configurazione lato server? O questo è un problema con il lato client? Come posso modificare entrambi in modo che la generazione del proxy funzioni come previsto?

risposta

6

OK, sembra che ci siano problemi nell'aggiunta di un riferimento di servizio ai servizi che implementano l'associazione WCF WebHttpBinding.

Questo è discusso in Carlos Figueira Blog Post

+0

Questa è stata la causa del mio problema. I servizi WCF configurati per comportarsi come i servizi RESTful presentano questo problema durante la generazione di riferimenti al servizio da Visual Studio – Sal

0

Rimuovi maxBufferPoolSize="2097152" maxBufferSize="2097152" dal tuo web.config file. Quindi prova ad aggiornare il tuo servizio. Assicurati che i tuoi binding siano menzionati correttamente.

+0

Ho rimosso tutte le opzioni sull'associazione, eliminato e ricreato il riferimento del servizio ma non ha risolto il problema. –

+0

Devi impegnarti. Ma è nel modo giusto. –

0

ho avuto di nuovo lo stesso problema di oggi con VS2012.

Ho un set di Test, PreProduction e Production web.config configurazioni, ho potuto utilizzare "Anteprima trasformazione", e vedere che VS2012 era patch mio "web.config" con le impostazioni relative ..

Preview

... ma ... quando ho distribuito, beh, sembrava solo includere il file "web.config" predefinito senza alcuna modifica.

La causa era che VS2012 sembrava aver incasinato le sue configurazioni, e nella finestra di dialogo Pubblica, improvvisamente la mia configurazione PreProduction era associata a Debug. Huh?

Publish

La modifica di questo da "Debug" a "PreProduction" risolto il problema per me.

O, almeno, mi ha spinto un passo avanti, ma sto ancora avendo un problema con VS2012 che incasina i miei nomi di configurazione quando tenta di distribuire.

Deploy

(sigh Depresso.)

Attualmente il download di VS2013. Speriamo che questa versione sia meno buggata.

0

Nel mio caso, è stato causato da Ho impostato un parametro di associazione errato sul lato del servizio web.

binding.ReliableSession.InactivityTimeout = TimeSpan.Maximum;

Dopo averlo impostato su System.TimeSpan (0, 10, 0); la configurazione dell'associazione è generata nel file web.config.