Hej! IISn registrerar porten och addressen hos http.sys som en SSL port. Jag kan inte kolla det här just nu men prova att använda httpsGetEnabled="true". Det borde inte vara några problem att få metadatan via https istället för http. Nä det går säkert att ordna, men i mitt fall så vill jag ha Meta datan på oskyddat http så att jag(och andra) kan med lätthet generera proxy klasser, medan själva servicen måste ligga på https(kryterat). Du vill väl då alltså sätta adressen till http och inte https? jag förstår inte varför det skulle vara svårt att generera proxies över https? Jag har nu configurerat om servicen och metadata(mex) till att endast använda https genom följande: Simon, jag har provat att sätta endpointen på mex till det som du anger, problemet med detta är att servicen kastar ett fel om att https var förväntat, medan http://localhost/AppIntegration/AppIntegration/mex genererar en "Page connot be found"WCF service på https och Meta data på http?
Jag har en WCF service som hostast i en IIS. Den virtuella katalogen som servicen ligger i är skyddad med ett certifikat vilket betyder att jag måste använda https(med krypterad överföring).
Jag har ställt in servicen på följande vis i web.config:
<behavior name="App.ServiceImplementation.AppIntegration_Behavior">
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceMetadata httpGetEnabled="true""/>
</behavior>
<service behaviorConfiguration="App.ServiceImplementation.AppIntegration_Behavior"
name="App.ServiceImplementation.AppIntegration">
<endpoint binding="wsHttpBinding" bindingConfiguration="Binding1" bindingNamespace="http://App.ServiceContracts/2007/06"
contract="App.ServiceContracts.IAppIntegration" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<bindings>
<wsHttpBinding>
<binding name="Binding1"
hostNameComparisonMode="StrongWildcard"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
openTimeout="00:10:00"
closeTimeout="00:10:00"
maxReceivedMessageSize="131072"
maxBufferPoolSize="1048576"
messageEncoding="Text"
textEncoding="utf-8"
bypassProxyOnLocal="false"
useDefaultWebProxy="true" >
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
</bindings>
När jag får till https://localhost/AppIntegration/AppIntegration.svc så får jag följande fel:
Could not find a base address that matches scheme http for the endpoint with binding MetadataExchangeHttpBinding. Registered base address schemes are [https].
Detta är inte så konstigt efter som metadatan är konfigurerad på http och inte https.
Om jag tar bort meta datan så fungerar det bra och min WCF klientn kan kommunicera, men jag måste kunna ha tillgång till Metadatat för att kunna updatera och förnya klienten.
Jag vill nu att servicen ska hostas i https precis som den gör, men Meta datan ska hostas oskyddat på http, hur gör man detta? Jag vill gärna inte hårdkoda in några adresser .
Sv: WCF service på https och Meta data på http?
Sv:WCF service på https och Meta data på http?
Jag har provat med att lägga in en fast adress i metadata endpointen :
<endpoint address="https://localhost/AppIntegration/AppIntegration/mex" binding="mexHttpBinding" contract="IMetadataExchange" />
När jag går till servicen så får jag : The provided URI scheme 'https' is invalid; expected 'http'.
Parameter name: context.ListenUriBaseAddress
Och när jag går till metadata sökvägen får jag "The Page cannot be found".
Detta ser inte ut att vara så enkelt som jag först trodde, något mer förslag?Sv: WCF service på https och Meta data på http?
<endpoint address="http://localhost/AppIntegration/AppIntegration/mex" binding="mexHttpBinding" contract="IMetadataExchange" />
Sv: WCF service på https och Meta data på http?
för att kunna få använda https i mex endpointen så måste du konfigurera transport security på den också:
<basicHttpBinding>
<binding name="SecureTransportBinding">
<security mode="Transport">
<transport />
</security>
</binding>
</basicHttpBinding>Sv:WCF service på https och Meta data på http?
<behavior name="App.ServiceImplementation.AppIntegration_Behavior">
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceMetadata httpsGetEnabled="true" />
</behavior>
<service behaviorConfiguration="App.ServiceImplementation.AppIntegration_Behavior"
name="App.ServiceImplementation.AppIntegration">
<endpoint binding="wsHttpBinding" bindingConfiguration="Binding1" bindingNamespace="http://App.ServiceContracts/2007/06"
contract="App.ServiceContracts.IAppIntegration" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
<bindings>
<wsHttpBinding>
<binding name="Binding1"
hostNameComparisonMode="StrongWildcard"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
openTimeout="00:10:00"
closeTimeout="00:10:00"
maxReceivedMessageSize="131072"
maxBufferPoolSize="1048576"
messageEncoding="Text"
textEncoding="utf-8"
bypassProxyOnLocal="false"
useDefaultWebProxy="true" >
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
</bindings>
Och detta fungerar utmärkt.
Jag genererar inte idag någon proxy klass utan använder channelfactory manuellt istället och då direkt referencer, men vad händer om jag vill generera en proxy klass för en klient inne i Visual Studio 2005, kommer det inte bli problem om configureringen är satt till https? Vi vill hällst slippa använda svutil manuellt.Sv:WCF service på https och Meta data på http?