2013-08-06 13 views
12

Ich habe einen neuen IIS-Hosts WCF-Dienst mit dem webHttpBinding erstellt, der derzeit auf IIS Express auf meinem Entwicklungscomputer ausgeführt wird, und wenn ich versuche, "Service Reference" zu installieren, wird der Dienst ordnungsgemäß erstellt und die Datei Reference.cs sieht gut aus, aber die Dateien web.config oder app.config werden nicht aktualisiert.VS2012 Add Service Reference keine Konfigurationsdatei aktualisieren

Es werden keine Warnungen oder Fehlermeldungen empfangen.

Sowohl der Dienst als auch der Client zielen auf .Net 4.5 ab.

Service-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> 

Client-Konfiguration

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

Client Service Referenz

enter image description here

Jede der oben ref

einige Untersuchungen Nach fand ich diese Fragen Stackoverflow

Question 1

Question 2

Question 3

Und dieser Beitrag

Blog post

äh zu dem gleichen Problem, dass ich das Flag "Reuse types in references assemblies" deaktiviert habe, das ich gemacht habe.

enter image description here

Das Problem ist es nicht das Problem zu beheben haben. Ich habe versucht, die Service-Referenz zu aktualisieren und zu löschen und neu zu erstellen, aber es aktualisiert nie die Konfigurationsdatei.

Frage

Ist das ein Problem mit der Server-Seite-Konfiguration? Oder ist das ein Problem mit der Client-Seite? Wie ändere ich beides, damit die Proxy-Generierung wie erwartet funktioniert?

Antwort

6

OK, es sieht aus, als gäbe es Probleme beim Hinzufügen einer Dienstreferenz zu Diensten, die die WCF-Bindung WebHttpBinding implementieren.

Dies ist in Carlos Figueira Blog Post

+0

Das war die Ursache meines Problems. WCF-Dienste, die so konfiguriert sind, dass sie sich wie RESTful-Dienste verhalten, haben dieses Problem, wenn sie Dienstverweise von Visual Studio generieren – Sal

0

Entfernen Sie maxBufferPoolSize="2097152" maxBufferSize="2097152" aus Ihrer Datei web.config. Versuchen Sie dann, Ihren Dienst zu aktualisieren. Stellen Sie sicher, dass Ihre Bindungen korrekt erwähnt werden.

+0

Ich entfernte alle Optionen auf der Bindung, löschte und neu erstellt die Service-Referenz, aber das Problem wurde nicht behoben. –

+0

Sie müssen verbindlich sein. Aber es ist richtig. –

0

diskutierte ich mit VS2012 das gleiche Problem heute wieder hatte.

Ich habe eine Reihe von Test, PreProduction und Produktion Web.Config Konfigurationen, konnte ich "Vorschau Transformation", und sehen, dass VS2012 war meine "web.config" mit den entsprechenden Einstellungen Patchen ..

Preview

... aber ... wenn ich bereitgestellt, nun, es schien nur die Standarddatei "web.config" ohne Änderungen zu enthalten.

Die Ursache war, dass VS2012 seine Konfigurationen zu vermasseln schien, und im Publish-Dialog wurde plötzlich meine PreProduction-Konfiguration mit Debug verknüpft. Hä?

Publish

Dies zu ändern ist von "Debug" auf "PreProduction" das Problem behoben für mich.

Oder zumindest hat es mich einen Schritt vorwärts, aber ich habe noch ein Problem mit VS2012 messaging meine Konfigurationsnamen, wenn es versucht, zu implementieren.

Deploy

(Depressive Seufzer.)

Derzeit VS2013 Download bereit. Hoffentlich wird diese Veröffentlichung weniger fehlerhaft sein.

0

In meinem Fall wurde es verursacht, indem ich einen Bindeparameter auf der Web-Service-Seite falsch eingestellt habe.

binding.ReliableSession.InactivityTimeout = TimeSpan.Maximum;

Nach dem Einstellen auf System.TimeSpan (0, 10, 0); Die Bindungskonfiguration wird in der Datei web.config generiert.