Introducción
Aunque actualmente seguro se cuanta con Win 7, o alguna versión Win 2008 en un servidor, no va a faltar la ocasión que ante alguna prueba simple solo se disponga de Windows XP para montar el server web, quizás para algún uso de red local resulta simple
Se da por hecho que el IIS esta instalado en Windows, lo cual se realiza desde “Add and Remove Programs” en la opción especial “Add and Remove Windows Components”
Algo que debe aclararse antes de empezar es que el IIS de Windows XP no se pueden crear sitios web a los cuales se le asignen un puerto, esto si se puede en Win 7 o alguna las versiones de Win Server
En el IIS de Win Xp solo se pueden crear directorios virtuales que estarán bajo el default en el puerto 80
Este artículo es la continuación de
[ASP.NET] Crear y Publicar - Web Service (1/3)
Definición del sitio web mediante Wizard
El primer paso como es de esperar será acceder al IIS, para lo cual se deberá ir al panel del control
Se accede el IIS, sonde podemos ver el sitio por defecto configurado en el puerto 80
Para crear el sitio que alojara el servicio solo es necesario acceder al Wizard que nos guiara
Se define un nombre que identifique el contenido
Se define la carpeta donde se alojara el deploy del desarrollo
Si se requiere se puede cambiar las opciones de acceso al sitio, se marcaria la opción “Browse” si se requiere permitir listas los archivos si es que no se define ninguna pagina en concreto, se marcaria “Write” en caso de permitir subir archivos al sitio por medio de http
La finalización dejaría el sitio como hijo del sitio Default, es importante validar que este el icono de la caja gris, lo cual indica que se creo correctamente
Alternativa creación sitio (sin Wizard)
La alternativa arranca con la creación de la carpeta del sitio que se quiere crear, pero en esta oportunidad debe realizarse dentro del wwwroot
Esto permite que al actualiza el IIS se observara la carpeta recientemente creada, esta claro que mientras este solo la carpeta con el icono simple no podrá alojarse un desarrollo que cuente con un web.config y dll independiente, porque como carpeta el root sigue siendo el default
el siguiente paso será acceder a las propiedades
La opción “Create” será la encargada de convertir esa simple carpeta en un directorio virtual que pueda alijar el desarrollo
Ahora si la carpeta ha cambiado y esta lista para aceptar la publicación
Publicar desarrollo
La publicación se podría ver como en dos partes, la primera consiste en obtener la compilación del proyecto web, para esta tarea se dispone la la opción de “Publish” del Visual Studio
Se presentara un cuando como el siguiente
donde se debería ingresar una carpeta local de la pc donde se ubicara la publicación
Se puede observar el log de la tarea para validar que no se produce ningún error
El resultado será la publicación en la carpeta
Esto debería copiarse y pegarse en la carpeta definida en el IIS
Desde el IIS se observara el cambio
Y si se accede desde el browser se podra ver la pagina web
y el servicio también
Configuración
Seguramente se deba realizar en algún momento el cambio de configuración en el sitio
Si algo no funciona seguro seria bueno validar que la extensión este definida
O validar los tiempos de timeout del sitio
Si estamos en desarrollo poder depurar seria de ayuda
Pero creo que verificar la seguridad es un punto clave para el funcionamiento
El usuario utilizado para impersonar el sitio es el definido en la opción de anónimos, si es necesario acceder a una carpeta de red o ejecutar alguna aplicación con determinados privilegios será necesario validar que ese usuario pueda hacerlo
Validar si la aplicación desarrollada cuenta con alguna pagina por defecto
sino se cuenta con una pagina dentro de la lista de default y tampoco se define una, al acceder al sitio este fallara porque no podrá encontrar que pagina cargar, salvo que se tenga la opción de “Browse” marcada
Validar la versión del framework es muy importante
si de casualidad se instalo primero el framework de .net y luego se habilito el IIS quizás haga falta ejecutar el comando
aspnet_regiis –i
para así asociar los componente de .net con el IIS
Hola disculpa tengo una problemita, quisiera saber como puedo validar un combobox que esta dentro de un gridview la validacion seria mediante una alerta y bueno la validacion seria en este caso tengo un gridview de dos columnas la primera que es un listado de personas y la siguiente columna es el combobox y bueno al momento de seleccionar un dato del combobox normal pero si en la otra fila vuelvo a seleccionar el mismo dato me deberia de salir el mensaje, por fa ayudame muchas gracias
ResponderEliminarhola warner
ResponderEliminartieens si o si validarlo al momento de la seleccion ? lo pregunto porque podrias dejar que el usuario seleccione lo que quiera y luego al confirmar en el evento click del boton recorres las rows del gridview tomando la info del combo de cada fila y validas si se selecciono algun item mas de una vez
si se hizo generas el alert con la validacion y no continuas con el proceso
si pasa la validacion entonces procesas los registros del gridview
saludos
Leandro muy buen articulo, solo una consulta si quisiera cambiar el puerto para el webservice o el sitio, para queno se escuche en el 80 sino por ejemplo en el 5454. Como lo haria??
ResponderEliminarhola Fernando
ResponderEliminarsi estas usando Win Xp debes cambiar el puerto del "Default Web Site"
solo ve a las propeidades de este y alli esta la opcion para cambiarlo
saludos
buenas leandro, entro al blog, y lo que voy a decir no tiene nada que ver con el tema pero si Ud supiera o me pudiera ayudar a encontrar la respuesta, el tema es que tengo la version de evaluacion del software System Center virtual machine manager y expiró, que tendria que hacer para obtener la llave o algun paso para poder utilizarlo nuevamente
ResponderEliminarhola Airelis
ResponderEliminarla verdad nunca he usado System Center, por lo que no sabria como recuperar la llave de la aplicacion
saludos
hola leandro nose si te llego mi duda?
ResponderEliminarpero aki esta otra vez....
--> se puede usar el metodo response en una funcion dentro de una clase, todo esto lo que quiero hacer una funcio global para exportar gridview a excel( pasando conmo paranmetro una grilla)...
ya lo hice pero me marca error
...en response
hola germanRive
ResponderEliminarsi puede hacerlo, debes agregar al referencia a System.Web
y luego usas
HttpContext.Current.Response
saludos
gracias leandro ya me salio la funcion y exporta y todo....pero al meterlo en un try catch...cae el el catch excepxion y me dice" eror al evaluar la propiedad" y ya le buske y no hayo la solucion...
ResponderEliminarHttpContext.Current.Response.End() con esta linea da la eexcepcion, y sin en vez de ' end' y pongo 'flufh' no da excepcion pero el detalle esta en ke me manda todo lo que tengo en la pagina)...alguna idea leandro para solucionar esto
hola germanRive
ResponderEliminarque raro el mensaje del error, lo exportas similar a como se realiza aqui
http://social.msdn.microsoft.com/Forums/es/netfxwebes/thread/f1c9fa68-9efe-4cf3-9519-1cb56bbc41e7
o sea hacer el Response.Clear() al comienzo
saludos
asi es leandro utilo el mismo codigo de ahy.. ttpContext.Current.Response .Clear(), porque lo tengo en una funcio n como te dije anteriormente....
ResponderEliminarHola leandro. Tengo un problema en una pagina que estoy realizando en asp.net con Visual Studio 2012.
ResponderEliminarCuando coloco un Control de Validacion(RangeValidator) a un objeto asociado (TxtBox) no me muestra el error y lo estoy programando igual que en el Visual 2005 en el cual me funciona correctamente.
Sabrias que puede ser?
Muchas Gracias
hola Miguel
ResponderEliminarno obtienes tampoco ningun error de javascript ?
que pasas si creas un proyecto nuevo de prueba y colocas solo un textbox y un RangeValidator, alli si funciona?
esto es para descartar si es un problema del proyecto que estas creando o es algo general
saludos
No me tira ningun error. Primero pense que era un error en el proyecto que tenia creado, pero despues lo probe con un proyecto nuevo y es lo mismo.
ResponderEliminarVos probaste estos controles en Visual 2012?
hola Miguel
ResponderEliminarla verdad no lo he probado con VS 2012
Hola Leandro,
ResponderEliminarPerdón por preguntar un tema q no pertenece a esta entrada pero no encontré donde mas hacerlo, si me puedes direccionar te agradezco.
Estaba leyendo tu respuesta sobre el tema:
http://social.msdn.microsoft.com/Forums/es/netfxwebes/thread/b82fde25-8640-4568-94c9-40d6aa98b03b
y estoy totalmente de acuerdo en q se debe tomar la hora del servidor, pero no se podrá asignar la zona horaria de un país especifico a la aplicación desde el web.config? así como se asigna el idioma y otras variables culturales en la etiqueta globalization?
hola fercho
ResponderEliminarhasta donde se la zona horaria se define especificando la cultura
si notas que con este no se determina quizas en cada request debas asignar el Thread.CurrentThread
http://www.dotnetfunda.com/codes/code1084-convert-the-time-according-to-the-timezone.aspx
al definir una cultura cambias el TimeZone
saludos
Ola Leandro, primero que nada quiero felicitarte por esta aportación tan valiosa que ayuda a mucha mas gente de las que comentamos... ahora va mi pregunta, seguí los pasos para hacer la publicación ya que yo tengo mi propia aplicación web pero ocupo publicarla, entonces seguí los pasos que indicas pero al intentar entrar desde el navegador me dice en el chrome "Directory listing Denied" y desde el explorer me dice que no estoy autorizado para ver la página... revisé la seguridad y se muestra tal y como muestras en tu imagen... lo que si le faltaba era la versión de asp.net y le puse la 2.0.50727... ya le apliqué el comando regiis -i para la version 2.0.50727 y siguió todo igual y la cambie a la 4.0 y apliqué regiis -i de nuevo en la carpeta v4.0 y todo sigue igual... que podrá ser?
ResponderEliminarhola Primate
ResponderEliminarlo de la version de .net no es cuestion de aplciar cualquier, sino que debes usar en el sitio la misma que usaste para desarrollar, no es cuestion de aplciar por aplicar
con respecto al error probaste poner en el browser la url hacia una pagina en concreto? o sea poner
http://sitio:puerto/pagina.aspx
pero escrine la pagina aspx a la cual accedes, porque a veces sino hay una pagina por defecto y la opcion de browse del sitio no esta permitido muestra ese mensaje
saludos
De hecho cuando hice la aplicación la hice en framework 3.5 y lo noté hasta despues y la baje a 2.0, ahorita desinstalé el iis y lo volví a instalar para hacer todo desde cero, y con respecto a tu pregunta, sobre si intententé esto "http://sitio:puerto/pagina.aspx" lo que realmente intenté fue... "http://localhost/sitio/pagina.aspx"... pero ahorita lo intento como dices tu....
ResponderEliminarsaludos y gracias por la pronta respuesta...
No funcionó :s... ya no se que pueda ser... mi aplicación es solamente una página que se conecta a una base de datos en sql, ademas tiene un proyecto donde agrego 2 clases... no se me ocurre nada ya :S...
ResponderEliminarhola Primate
ResponderEliminarestas usando Win Xp ? porque en este no puedes crear puertos en el IIS
porque no pruebas creando un proyecto simple de cero en el VS, solo ubica un textbox y un boton y publicalo, recuerda que la version que uses es l aque debes tener en el iis, pero ojo si usas .net 3.5 seguiras usando .net 2 en el sitio web
podrias probar ejecutando el aspnet_regiis -i para registrar .net de forma correcta en el iis
saludos
lo intenté en otra computadora y funcionó... creo que ya le moví tanto que he de haber dañado algún archivo... lo bueno es que ya se como ahcerlo... gracias.
ResponderEliminarbuenas tardes leandro: tu post esta muy bueno y es de mucha ayuda, pero me gustaria saber como hacer para certificar con ssl un web service para que cualquiera que obtenga la direccion donde esta publicado, no pueda acceder a la informacion
ResponderEliminarhola veronica
ResponderEliminarel certificado lo debes configurar en el IIS
IIS 7 SSL Certificate Installation
saludos
Leandro:
ResponderEliminarDesarrollo una página que usa el control .visible, y estoy teniendo problemas en la sesion. Detallo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
public partial class Textos : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
NAVASN.Visible = false;
PORCEN.Visible = false;
NAVASP.Visible = false;
PORCEP.Visible = false;
if ((string)Session["autor"] != "")
{
Label1.Text = "FUNCIONA HASTA 1ER IF, SESSION != ''";
Label2.Text = (string)Session["autor"];
if ((string)Session["autor"] == "NAVASN")
{
Label2.Text = "RECONOCE " + Session["autor"];
Session["autor"].Visible = true;
PORCEN.Visible = false;
NAVASP.Visible = false;
PORCEP.Visible = false;
}
else if ((string)Session["autor"] == "PORCEN")
{
Label2.Text = "RECONOCE PORCEN";
NAVASN.Visible = false;
PORCEN.Visible = true;
NAVASP.Visible = false;
PORCEP.Visible = false;
}
else if ((string)Session["autor"] == "NAVASP")
{
Label2.Text = "RECONOCE NAVASP";
NAVASN.Visible = false;
PORCEN.Visible = false;
NAVASP.Visible = true;
PORCEP.Visible = false;
}
else if ((string)Session["autor"] == "PORCEP")
{
Label2.Text = "RECONOCE PORCEP";
NAVASN.Visible = false;
PORCEN.Visible = false;
NAVASP.Visible = false;
PORCEP.Visible = true;
}
}
else
{
Label1.Text = "SESION VACIA";
}
}
protected void NAVASN_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
hola Humberto
ResponderEliminarno entendi, cual seria el problema con la session
y porque dices que la propeidad visible estaria afectando
imagino antes de redireccionar a la pagina y que ingrese al Page_Load asignas un valor a la key "autor" de la session, no?
saludos
Hola Leandro
ResponderEliminarTengo una duda respecto al tema,
ya que seguí todos tus pasos tal y como indicas, y lo que sucede es que
es que al momento de querer entrar a la pagina desde el explorador, me sale un mensaje indicando lo siguiente:
"Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur."
Y la verdad no tengo idea de porque sea.
Estoy ocupando Win xp y Famework 4.0, espero y me pueda ayudar
:)
hola Miguel
ResponderEliminarpero esto sucede cuando ejecutas desde el VS o cuando publicas he ingresas a la url del sitio en el IIS ?
validaste que el Application Pool este iniado?
el sitio lo pones dentro de Default Web Site, no? si es asi crear un directorio virtual
saludos
Esto sucede cuando publico e ingreso a la url del sitio en el IIS
ResponderEliminarsupongo que es por que no lo he iniciado en Application Pool.
Y es por que no se como, te agradecería mucho que me ayudaras
hola Miguel
ResponderEliminarlo del virtual directory lo validaste ? pones tu desarrollo en una carpeta o directo sobre en la carpeta del "default web site"
validaste como explico en el articulo la solapa de ASP.NET seleccionado el framework correcto?
saludos
Hola, tengo un problema con el sitio, cuando lo publico una de mis paginas aspx se quedan sin funcionalidad y no entiendo porque. Es decir tengo un menu en todas las páginas, al hacer clic sobre un ítem debe salir un textbox o gridview según el caso pero simplemente no hace nada. Alguna idea, gracias.
ResponderEliminarhola Eliana
ResponderEliminaresto sucede cuando publicas, o cuando ejecutas desde el VS tambien ?
esto sucede en todas las paginas o solo en una sola donde tienes el textbox y el gridview ?
intentaste definir el EmptyDataTemplate del grid para ver si el hecho de no ver nada se deba a que no se estan cargando datos
saludos
Gracias por contestar, sucede cuando lo publico en el iis, en vs si funciona, es decir, cuando le pruebo en el explorador, y esto sucede solo con una de mis páginas.
ResponderEliminarLe coloque un textbox para que al hacer clic en el menú se haga visible pero ni eso funciona, no se que sucede. Te agradezco cualquier pista.
hola Eliana
ResponderEliminarpero si pones unos textbox en esas paginas no ves siquiera los controles?
o lo que no visualizas son los datos que se obtienen de la db dentro de los controles ?
estas definiendo algun try...catch en el codigo sin loguear el error a un archivo, porque puede que un error que no redirecciona a ningun lado sea el problema
sino controla los errores en el page_load y loguea a un archivo por donde pasa la ejecucion
saludos
hola, gracias por la ayuda, pero resulta que era problema del crystal por así decirlo, para solucionarlo coloque la carpeta aspnet_client en donde se encontraba la página con el problema y funciono. Ahora quisiera me orientes como publico mi sitio web iis en internet, es decir, para que lo vea cualquiera, no solo lo que se encuentren en red. Muchas gracias por tomarte tu tiempo.
ResponderEliminarhola Leandro, fijate que me sale este error al momento de jalar un archivo de Excel de mi computadora:
ResponderEliminarError de servidor en la aplicación '/'.
No se pudo recuperar el generador de clases COM para el componente con CLSID {00024500-0000-0000-C000-000000000046} debido al siguiente error: 80070005 Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)).
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.UnauthorizedAccessException: No se pudo recuperar el generador de clases COM para el componente con CLSID {00024500-0000-0000-C000-000000000046} debido al siguiente error: 80070005 Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)).
ASP.NET no está autorizado para obtener acceso al recurso solicitado. Considere la posibilidad de conceder derechos de acceso al recurso para la identidad de solicitud de ASP.NET. ASP.NET tiene una identidad de proceso base (normalmente {MACHINE}\ASPNET en IIS 5 o Network Service en IIS 6 e IIS 7, y la identidad del grupo de aplicaciones configurada en IIS 7.5) que se utiliza si la aplicación no se va a suplantar. Si la aplicación se va a suplantar mediante , la identidad será el usuario anónimo (generalmente IUSR_MACHINENAME) o el usuario solicitado autenticado.
To grant ASP.NET access to a file, right-click the file in File Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.
Y este error cuando quiero ver mis reportes que hice con crystal reports:
Error de servidor en la aplicación '/'.
Acceso denegado. - DTSConnection
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.UnauthorizedAccessException: Acceso denegado. - DTSConnection
ASP.NET no está autorizado para obtener acceso al recurso solicitado. Considere la posibilidad de conceder derechos de acceso al recurso para la identidad de solicitud de ASP.NET. ASP.NET tiene una identidad de proceso base (normalmente {MACHINE}\ASPNET en IIS 5 o Network Service en IIS 6 e IIS 7, y la identidad del grupo de aplicaciones configurada en IIS 7.5) que se utiliza si la aplicación no se va a suplantar. Si la aplicación se va a suplantar mediante , la identidad será el usuario anónimo (generalmente IUSR_MACHINENAME) o el usuario solicitado autenticado.
To grant ASP.NET access to a file, right-click the file in File Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.
y la verdad que ya estoy algo desesperada, no se si tenga que ver que mi windows7 es de 64bits, porque la aplicacion la he puesto en una maquina de 32bits y corre.
Agredesco desde ya tu ayuda. :D
hola
Eliminareste es un error bastante conocido de excel cuando ejecuta en un ambiente web
Configuración IIS y DCOM para importar / exportar a MSExcel mediante Interop
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154
como veras COM tiene sus problemas y hay que seguir unos pasos para habilitarlo
saludos
respecto a los 64 o 32 bits recuerda que en el IIS debes habilitarlo
Eliminar- primero debes cambiar el Platform Target de proyecto a x86
- despues debes habilitarlo en el iis imagen
saludos