2011-07-27 26 views
6

I dida wcf autenticación de nombre de usuario/contraseña en mi computadora local, con certificado autofirmado, todo funciona bien, pero cuando puse mi aplicación en IIS 7.5, y Windows Server 2008 R2, me da el error:

No se pudo encontrar una dirección base que coincida con el esquema http para el punto final con enlace WSHttpBinding. Los esquemas de direcciones base registradas son [https]. Mi CFG servicio web:
No se pudo encontrar una dirección base que coincida con el esquema http para el punto final con enlace WSHttpBinding

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceCredentialsBehavior"> 
     <serviceCredentials> 
     <serviceCertificate findValue="cn=AmicCert" storeName="Root" storeLocation="LocalMachine" /> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Util.CustomUserNameValidator, Util" /> 
     </serviceCredentials> 
     <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service behaviorConfiguration="ServiceCredentialsBehavior" name="Service"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="MessageAndUserName" name="SecuredByTransportEndpoint" contract="IService" /> 
    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
    <binding name="MessageAndUserName"> 
     <security mode="Message"> 
     <message clientCredentialType="UserName" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 
     <client /> 
    </system.serviceModel> 
    <system.web> 
<compilation debug="true" /> 
</system.web> 
</configuration> 

Respuesta

12

Suena como el IIS instancia de sitio web que está recibiendo sólo bajo está configurado para HTTPS (SSL). Haga clic con el botón derecho en la instancia del sitio web y seleccione "Editar enlaces ...". ¿Ves el puerto 80 (HTTP simple) enumerado allí? También verifique la función "Configuración de SSL" para asegurarse de que la opción "Requerir siempre" no esté activada.

+0

Sólo hay una unión, y que está en el puerto 8010 (puerto reenvío), ¿debo crear otro enlace con 80 puertos y sin https? – croisharp

+0

El puerto no importa, pero tiene que haber una dirección no HTTPS/SSL vinculada al sitio porque no está utilizando seguridad de transporte (solo seguridad de mensajes) en su configuración. –

+0

Keyset no existe, me da ahora este error :( – croisharp

1

Para conseguir que funcione y sigue teniendo el IIS para requerir SSL, es necesario hacer algunos cambios en su punto final en el fichero de configuración: Establecer la propiedad address a la dirección del servicio con https (https://...) y la propiedad listenUri a la dirección del servicio con http (http://...). Esto se aplica tanto a wsHttp como a basicHttp.

+0

No tengo un protocolo especificado en mi punto final, por lo que no es así? – ashes999

9

La respuesta de Drew es correcta si no desea usar HTTPS/SSL para el punto final.

Si desea utilizar SSL sobre el punto final, tiene que cambiar su:

<security mode="Message"> 

a:

<security mode="TransportWithMessageCredential"> 
Cuestiones relacionadas