An Avanade Blogging Community

Welcome to An Avanade Blogging Community Sign in | Join | Help
in Search

JuanLu, ElGuerre

Hosteando en IIS un WCF con Http Basic Authentication y Compatibilidad ASP.NET (HttpContext; Session, cookies, cache, etc)

Una vez más, sigo por aquí con VS2008 y con WCF, en esta ocasión trataré de comentar, como hostear en IIS un WCF basado en un binding "Http Basic Authentication" y conseguir hacer uso de nuestra conocida clase HttpContext. Son unos cuantos pasos muy fáciles y básicos, jejeje.. ¡claro, ahora que los conozco!

Los pasos a seguir para conseguir el objetivo de este post son:

  1. Crear un proyecto Web de tipo "WCF Service Application".

  • La plantilla nos creará un proyecto con un Interfaz (Servicio) y una clase de datos (contrato), además un servicio, lo que es nuestro Web Service que ha de implementar obligatoriamente la Interfaz.
  • Seguidamente modificamos el Web.config del servicio manualmente o con nuestro maravilloso editor (Windows Communication Foundation (WCF) - BUG 1) estableciendo principalmente la configuración tal y como muestro aquí un par de pantallazos:

 

  • A continuación tenemos dos opciones para trabajar con la compatibilidad  ASP NET:
    • Anadir el attributo "AspNetCompatibilityRequirements" ([AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Allowed)]) al servicio, Service1 tal y como se muestra a continuación. Aprovechamos para establecer el Namespace, :-D, ¡ya sabéis "best practices"! (tempuri.org con WCF).

1 [ServiceBehavior(Namespace="http://elGuerre.loc/Service1/")] 2 [AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Allowed)] 3 public class Service1 : IService1 4 { 5 public string GetData(int value) 6 { 7 return string.Format("You entered: {0}", value); 8 } 9 10 public CompositeType GetDataUsingDataContract(CompositeType composite) 11 { 12 if (composite.BoolValue) 13 { 14 composite.StringValue += "Suffix"; 15 } 16 return composite; 17 }

    • y, añadir la siguiente línea en el web.config.

1 <system.serviceModel> 2 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 3 ...

O,

    • Añadir el atributo "AspNetCompatibilityRequirements" ([AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Required)] y,
    • no incluir la configuración en el web.config.
  • Publicar el servicio ("Publish").
  • Modificar las propiedades del sitio Web en IIS:
    1. Quitar autenticación anónima
    2. Activar autenticación básica (dejar activa solamente esta casilla).

Ahora tenemos la compatibilidad con ASP.NET  pero con la potencia de WCF, nuestra clase HttpContext (session, cookies, cache, etc) está lista para ser usada.

Si estáis interesados en esto, aquí os dejo unas cuantas referencias:

 

Saludos @3Cantos
Juanlu Crossposting from JuanLu, El Guerre

Published Wednesday, February 27, 2008 11:16 AM by ElGuerre

Comments

No Comments
Anonymous comments are disabled

About ElGuerre

Soy Juan Luis Guerrero, conocido como "Juanlu, El Guerre". Actualmente trabajo como Consultor Informático en Avanade Spain S.L, en Madrid y también publico en "Blogspot" y en "El Bruno".

This Blog

Post Calendar

<February 2008>
SuMoTuWeThFrSa
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

Syndication