2011-04-04 16 views
7

Tengo un proyecto de servicio WCF 4 que he creado usando la plantilla 40.WCF 4 Jabón y JSON punto final Asegurado con DotNetOpenAuth

Mi objetivo es exponer un único servicio WCF a cabo tanto como un extremo SOAP y REST WCF Servicio un punto final RESTful que devuelve datos formateados JSON. Ambos puntos finales deben estar protegidos a través de mi DotNetOpenAuth OAuthAuthorizationManager que se copia del proyecto de muestra.

Hasta ahora, tengo servicios SOAP WCF que pueden autorizar con éxito a un consumidor de mi proveedor de servicios OAuth. Para hacer esto, utilicé la misma configuración que estaba en el ejemplo del proveedor de servicios DotNetOpenAuth.

Ahora, estoy tratando de configurar un punto final de respuesta WCF RESTful JSON para el mismo servicio y también asegurar ese punto final. No estoy seguro de cómo lograr esto. Mi idea inicial era hacer que se vea como esto:

<behaviors> 
    <serviceBehaviors> 
    <behavior name="DataApiBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceAuthorization principalPermissionMode="Custom" serviceAuthorizationManagerType="OAuthServiceProvider.Core.OAuthAuthorizationManager, OAuthServiceProvider" /> 
    </behavior> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<services> 
    <service behaviorConfiguration="DataApiBehavior" name="OAuthServices.DataApi"> 
    <endpoint address="soap" binding="wsHttpBinding" contract="OAuthServices.Interfaces.IDataApi"/> 
    <endpoint address="json" binding="webHttpBinding" contract="OAuthServices.Interfaces.IDataApi"/> 
    </service> 
</services> 

Y entonces vi esta entrada del blog sobre la fabricación de los servicios REST WCF + DotNetOpenAuth trabajan juntos: http://www.theleagueofpaul.com/codesnippet-ooo-openid-odata-oauth-together

No estoy seguro de si la creación de una fábrica más la sección de Autorización de Servicio de la configuración del servicio causaría problemas.

También estoy seguro de si hay algo que tengo que hacer en el método RegisterRoutes en el Global.asax:

private void RegisterRoutes() 
{ 
    RouteTable.Routes.Add(new ServiceRoute("DataApi", new WebServiceHostFactory(), typeof(DataApi))); 
} 

Cualquier consejo aquí sería apreciada. Gracias por cualquier ayuda.

Háganme saber si necesita más información.

Respuesta

1
No

seguro, pero he oído que para habilitar de SOAP es necesario utilizar basicHttpBinding y establecer

aspNetCompatibilityEnabled = "true"

Podría estar equivocado, pero ¿por qué no intentarlo?

+0

¡Correcto! para que el punto final Json funcione, necesita BasicHttpBinding con aspNetCompatibilityEnabled = "Tru" –

Cuestiones relacionadas