2013-08-07 35 views
5

Mam usługę WCF, która działa za pomocą basicHttpBinding, próbuję skonfigurować go do przejść przez https i uwierzytelniania z dostawcą członkostwa SQL, a do tego próbuję przekonwertować go do korzystania z wsHttpBinding .Konfigurowanie WCF dla wsHttpBinding

Jednak z zaktualizowanym config pojawia się następujący komunikat o błędzie podczas próby połączenia z klientem:

Nie można znaleźć domyślnego elementu końcowego umowa odniesienia „KFileService.IKFileWcfService” w sekcji konfiguracji klient ServiceModel . Przyczyną może być brak pliku konfiguracyjnego dla aplikacji lub brak elementu punktu końcowego pasującego do tej umowy w elemencie klienta.

Oto odnośny fragment web.config dla serwera:

<system.serviceModel> 
    <protocolMapping> 
     <remove scheme="http" /> 
     <add scheme="https" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IKFileWcfServiceBinding" /> 
    </protocolMapping> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="KFileWcfServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
      <serviceCredentials> 
      <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" 
       membershipProviderName="SqlMembershipProvider" /> 
      </serviceCredentials> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="KFileWcfServiceBehavior" name="KFileWcfService"> 
     <endpoint address="https://localhost:36492/KFileWcfService.svc" 
      binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IKFileWcfServiceBinding" 
      name="wsHttpBinding_IKFileWcfService" bindingName="wsHttpBinding_IKFileWcfServiceBinding" 
      contract="KFileWcfService.IKFileWcfService"> 
      <identity> 
      <certificateReference storeLocation="CurrentUser" /> 
      </identity> 
     </endpoint> 
     </service> 
    </services> 
    <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="0" multipleSiteBindingsEnabled="true"/> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="wsHttpBinding_IKFileWcfServiceBinding" maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
      <readerQuotas maxDepth="32" maxStringContentLength="100000" maxArrayLength="2147483647" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="Message"> 
      </security> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
</system.serviceModel> 

I oto po stronie klienta:

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="wsHttpBinding_IKFileWcfService" /> 
     </wsHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://localhost:36492/KFileWcfService.svc" 
     binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IKFileWcfService" 
     contract="KFileWcfService.IKFileWcfService" name="wsHttpBinding_IKFileWcfService" /> 
    </client> 
    </system.serviceModel> 

robiłem mój najlepszy, aby przejść przez cały już istniejące pytania i przykłady, ale nie miałem szczęścia. Czy ktoś może mi powiedzieć, co robię źle?

Edit:

Dla dalszego odniesienia, oto konfiguracja po stronie serwera, który współpracuje z basicHttpBinding:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false before deployment --> 
      <serviceMetadata httpGetEnabled="true" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="KFileWcfService"> 
     <endpoint address="https://localhost:36492/KFileWcfService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IKFileWcfService" contract="KFileService.IKFileWcfService" name="BasicHttpBinding_IKFileWcfService" /> 
     </service> 
    </services> 
    <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="0" multipleSiteBindingsEnabled="true"/> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_IKFileWcfService" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Streamed"> 
      <readerQuotas maxDepth="32" maxStringContentLength="100000" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
</system.serviceModel> 

i klient:

<system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IKFileWcfService" /> 
      </basicHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="https://localhost:36492/KFileWcfService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IKFileWcfService" 
       contract="KFileService.IKFileWcfService" name="BasicHttpBinding_IKFileWcfService" /> 
     </client> 
    </system.serviceModel> 
+0

Być może pokaż nam swoje starsze podstawoweHttpBinding. –

+0

Dodano to pytanie. – Eric

Odpowiedz

6

Rodzaj umowy o świadczenie usług na kliencie którego próbujesz użyć, na podstawie Twojego komunikatu o błędzie:

KFileService.IKFileWcfService 

Rodzaj interfejsu umowy o świadczenie usług, które masz na swojej konfiguracji klienta:

KFileWcfService.IKFileWcfService 

Powinny być takie same. Zmień konfigurację klienta na

To powinno działać.

+2

Good old stackoverflow. Zapewnienie przez ramię wsparcia dla literówek. Fajny pickup. –

+0

Tak, dziękuję! Nie mówiłem, jak długo będę się na to gapił, zanim się o tym dowiem. Wygląda na to, że z konfiguracją wciąż jest kilka problemów, ale to rozwiązało problem, który pojawił się w pytaniu, więc zaznaczam to jako akceptowaną odpowiedź. Dzięki jeszcze raz! – Eric