Exprime la potencia asíncrona en IIS

Una aplicación ASP.NET sobre IIS escala muy bien y tiene muy buen resultado cuando hablamos de peticiones por segundo, pero la cosa puede mejorar cuando hablamos de conexiones concurrentes.

Teniendo en cuenta que cada vez más nuestras aplicaciones son asíncronas, está aumentando la cantidad de peticiones que nuestra aplicación tiene que soportar .

Por defecto ASP.NET 4.o acepta 5.000 peticiones concurrentes por CPU

Peticiones concurrentes por CPU:

Una aplicación ASP.NET en modo integrado bajo IIS7 nos permite configurar cómo administrar los subprocesos y como poner en cola las solicitudes cuando la aplicación está hospedada en un grupo de aplicaciones de IIS.

Los valores applicationPool se aplican a todos los grupos de aplicaciones que se ejecutan en una versión determinada de .NET Framework. La configuración está contenida en un archivo aspnet.config. Hay una versión de este archivo para las versiones 2.0 y 4 de .NET Framework. (Las versiones 3.0 y 3.5 de .NET Framework comparten el archivo aspnet.config con la versión 2.0.)

  • maxConcurrentRequestPerCPU: Especifica cuántas solicitudes simultáneas permite ASP.NET por CPU.
  • maxConcurrentThreadsPerCPU: Especifica cuántos subprocesos simultáneos se pueden estar ejecutando para un grupo de aplicaciones para cada CPU. Esto proporciona una manera alternativa de controlar la simultaneidad de ASP.NET, ya que puede limitar el número de subprocesos administrados que se pueden usar por CPU para atender las solicitudes. De forma predeterminada este valor es 0, lo que significa que ASP.NET no limita el número de subprocesos que se pueden crear por CPU, aunque el grupo de subprocesos de CLR también limita el número de subprocesos que se pueden crear.
  • requestQueueLimit: Especifica el número máximo de solicitudes que se pueden poner en cola para ASP.NET en un único proceso. Cuando dos o más aplicaciones ASP.NET se ejecutan en un único grupo de aplicaciones, el conjunto acumulativo de solicitudes que se realizan a cualquier aplicación del grupo de aplicaciones está sujeto a este valor. Sigue leyendo
Anuncios

Error en IIS BadImageFormatException

Subiendo una aplicación web al servidor me encontré con un error muy raro y que hasta el momento no me había pasado nunca.

Error System.BadImageFormatException !!!

La página del error en el IIS es:

error

La aplicación hasta ese momento estaba funcionando y después de añadirle un nuevo ensamblado  Masivos.Application.Interfaces dejó de funcionar. Lo curioso es que en el servidor de desarrollo funcionaba perfectamente, pero en el servidor de Pre no había manera que funcionara. Sigue leyendo

[Tip] Adjuntar datos al proceso IIS

Estoy en un proyecto que tenemos un servicio WCF configurado directamente en el servidor IIS, pero cada vez que arrancamos el servicio para debugar nos pide permisos para adjuntar los datos al proceso actual del IIS. Eso más que un problema es un incordio y explicar porque sale y como evitar este mensaje.

IISconf6

La verdad es que no le había dado mucha importancia al mensaje porque solo es un aviso, pero resulta muy incomodo aceptar el mensaje cada vez que arrancas el servicio.

El problema como nos podemos imaginar es de permisos y tiene una solución muy sencilla.

Como estamos ejecutando el servicio en IIS en vez de utilizar directamente el servidor web de Visual Studio, nos tenemos que asegurar que el usuario que lanza el proceso tenga suficientes permisos. Sigue leyendo

Actualizar-Generar certificado Web SSL en IIS 7

Estos días me a tocado renovar nuestro certificado SSL con el proveedor thawte y como no existe mucha información he decidido crear un mini tutorial explicando los pasos necesarios para realizar este mantenimiento. Para versiones anteriores del IIS podéis acceder a http://support.microsoft.com/kb/295281/es .

Para empezar aclararemos que con IIS7 es mucho más fácil renovar o generar el certificado, pero si no estas familiarizado con el panel de control es posible que te cueste un poco encontrar las opciones.

Comencemos:

1º Generar el fichero CSR

Tanto para generar un nuevo certificado como para renovarlo es probable que nos pidan un fichero para la solicitud de firma (.CSR) “dependiendo del proveedor”. Para esto tendremos que ir al panel de control de nuestro IIS. Seleccionar el servidor y en el apartado de seguridad seleccionar los certificados existentes.

Obtendremos la lista de certificados instalados en el servidor. Y seleccionamos la opción que necesitemos, en mi caso crear solicitud de certificado para generar el fichero CSR.

Rellenamos todos los campos:

  • Nombre común: “Muy Importante” Nombre del dominio completo o URL. Por ejemplo, un certificado SSL emitido por “www.tuEmpresa.com” no será válido para “secure.tuEmpresa.com”. Si la dirección Web que se utilizará para SSL es “secure.tuEmpresa.com,” garantizar que el nombre común presentada en la RSE es “secure.tuEmpresa.com”.  Para todos los subdominios puedes utilizar el * por ejemplo, “*. tuEmpresa.com” o “www *. tuEmpresa.com”.
  • Organización: Nombre de la empresa.
  • Unidad Organizativa: Departamento encargado del soporte por ejemplo “Departamento web”.
  • Ciudad o Localidad: Ciudad de contacto de la empresa.
  • Estado o Provincia: provincia de contacto de la empresa.
  • País o región: País de contacto de la empresa.

Seleccionar el proveedor de servicios criptográficos RSA 1024 bits y guardar el fichero con extensión CSR.

Se generará un fichero de este tipo “alterado ;-)”, que es el que se tiene que enviar a nuestro proveedor para generar la firma del certificado.

2º Instalar el Certificado en el servidor

Una vez que nuestro proveedor haya aceptado nuestro certificado web SSL ya lo podemos instalar en nuestro servidor web.

Nos pueden enviar el fichero o el texto del certificado, si es así tan sólo tenemos que generar un fichero de texto pegar el contenido y modificar la extensión por .CER para tener preparado el certificado para su instalación.

Volvemos al panel de control del IIS –> certificados –> completar solicitud de certificado.

Buscamos el fichero y lo añadimos a la lista de certificados del servidor.

3º Configurar nuestro sitio web HTTPS

Si estamos configurando un nuevo sitio tenemos que habilitar el protocolo HTTPS y si ya lo teníamos configurado solo tenemos que modificar el certificado que utilizamos en el sitio web.

Seleccionamos el protocolo HTTPS para modificar la configuración.

Seleccionamos el nuevo certificado SSL que utilizará el sitio web.

Certificado renovado o instalado con éxito !!!

Nuestro sitio web ya está utilizando el nuevo certificado SSL correctamente y ya no nos tenemos que preocupar hasta el año que viene ;-)

Espero que este mini tutorial os sea de ayuda.

Publicar Servicio WCF en un servidor compartido

Siguiendo con las ayuditas a mis rivales en el concurso Es la hora de los Puños , voy a exponer un error común que nos podemos encontrar al intentar publicar el servicio WCF en un servidor compartido, una configuración muy habitual en nuestros hostings.

El error:

Esta colección ya contiene una dirección con el esquema http. Sólo puede haber una dirección por esquema en esta colección.

image

El Problema:

El servidor web IIS solo permite una sola dirección base por esquema (HTTP) y eso para un entorno compartido es un verdadero problema, esto ya está solucionado en IIS 7.0 y framework 4.0 con el atributo multipleSiteBindingsEnabled en el elemento serviceHostingEnvironment.

Posible solución para versiones anteriores:

Para poder hospedar un servicio WCF con un extremo web en un servidor IIS hay que especificar  la clase WebServiceHostFactory en el archivo .svc

<ServiceHost Language="C#" Debug="true" Service="KillBits.Fight"
CodeBehind="Fight.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" >

O en el fichero de configuración estableciendo el binding webHttpBinding Sigue leyendo

Consultar un recurso Https con error en el certificado

Han habido varias consultas en el foro MSDN sobre como poder consultar un recurso web aunque el servidor que utiliza el protocolo https tenga el certificado caducado.

En esta entrada pondré un ejemplo muy simple que se puede utilizar para este menester.

Lo primero que he realizado es un proyecto web que utiliza una clase para enviar una petición xml, por ejemplo si quisiera consumir un servicio web XML en php que no dispone de una descripción pública del interfaz “WSD

La clase se llama Conector y utiliza un método estático que utiliza la clase HttpWebResponse para hacer la petición Http y devuelve el resultado obtenido de la petición como un string. Sigue leyendo

Donde está la pestaña de ASP.NET del IIS ???

Me encontraba yo instalando una aplicación Web ASP.NET 2.0 en Windows Server 2003 y al abrir el administrador del IIS no vi la pestaña de selección de la versión de ASP.NET. Lo primero que pensé fue que no tenía instalado el Microsoft Framework 2.0 o que tendría que reinstalarlo conAspnet_regiis.exepara que apareciera la tan querida pestaña.

Pero mi sorpresa aún fue mayor cuando descubrí que el servidor si tenía instalado el Framework 2.0, pero no solo eso, sino que también tenia la versión de 64bits, uff!!

Mi primera instalación en un servidor de 64 y ya comenzamos mal.

Después de navegar un poco por la red en busca de información sobre como solucionar mi problema vi soluciones muy rudimentarias como modificar el registro de Windows para trabajar con la versión correcta. Sigue leyendo