2013-11-27 11 views
5

Ho riscontrato un problema durante il tentativo di aggiungere un riferimento al servizio all'app Winforms. Sia il servizio che l'app sono nella stessa soluzione e il servizio utilizza iisexpress con il certificato di sviluppo iisexpress di default installato. Quando provo ad aggiungere il riferimento al servizio ottengo le normali finestre di dialogo che trovano il servizio e poi mi dicono che il certificato non è firmato da un'autorità. I "Ok" quel messaggio, ma poi ho ricevuto questo errore.La richiesta HTTP è stata vietata con errore "Anonimo" dello schema di autenticazione del client, quando si aggiunge il riferimento al servizio WCF

La richiesta HTTP è stata vietata con lo schema di autenticazione del client "Anonimo".

Il web.config per il servizio web è il seguente

<appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
     <authentication mode="Windows" /> 
     <identity impersonate="false" /> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="WsHttpBindingConfig"> 
      <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Certificate" /> 
      <message clientCredentialType="UserName" /> 
      </security> 
     </binding> 
     </wsHttpBinding> 

    </bindings> 
    <protocolMapping> 
     <add binding="wsHttpBinding" scheme="https" /> 
    </protocolMapping>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <!-- 
     To browse web app root directory during debugging, set the value below to true. 
     Set to false before deployment to avoid disclosing web app folder information. 
     --> 
    <directoryBrowse enabled="true" /> 
    </system.webServer> 

</configuration> 

EDIT ----------------

Ho anche visualizzato la seguente finestra di messaggio dopo aver accettato il certificato.

"C'è stato un errore di scaricare i metadati da questo address.please verificare di aver inserito un indirizzo valido"

Inoltre ho trovato se cambio

<protocolMapping> 
     <add binding="wsHttpsBinding" scheme="https" /> 
    </protocolMapping> 

a

<protocolMapping> 
     <add binding="basicHttpsBinding" scheme="https" /> 
    </protocolMapping> 

Quindi posso aggiungere improvvisamente il riferimento. Perchè è questo? Sicuramente ho bisogno che sia wsHttpsBinding?

risposta

0

Ho risolto il problema.

avevo bisogno di cambiare la seguente configurazione sul server

<protocolMapping> 
     <add binding="wsHttpBinding" scheme="https" /> 
    </protocolMapping> 

a

<protocolMapping> 
     <add binding="wsHttpBinding" scheme="https" bindingConfiguration="WsHttpBindingConfig" /> 
    </protocolMapping> 
0

Nella configurazione è presente <transport clientCredentialType="Certificate" />, che indica che è necessario utilizzare un certificato firmato per autenticare il client. Per questo è necessario disporre di un certificato firmato correttamente.

Provare a utilizzare <transport clientCredentialType="None" /> per aggirare o guardare the various options per vedere quale si applica al caso d'uso.

+0

ho cambiato il clientCredentialType Nessuno ricostruita poi tentato di aggiungere di nuovo il riferimento. Tuttavia ottengo lo stesso errore. – coolblue2000

+0

Potrebbe essere necessario rimuovere anche la voce ''; e per sicurezza, cambia '' a ''. – rae1

+0

Come faccio quindi a utilizzare le credenziali per accedere al servizio web? – coolblue2000

Problemi correlati