2009-05-22 35 views
8

Se me ha dado la tarea de agregar funcionalidad a un sitio web existente de IIS 6.0. Para hacerlo, he creado una aplicación ASP.NET MVC. Funciona bien cuando se implementa como su propio sitio, pero no parece funcionar cuando intento implementarlo como un directorio virtual en el sitio real donde necesita vivir.¿Por qué mi directorio virtual de IIS funciona con http: // localhost pero no con http: // computername?

El nombre del servidor es CWEBSERVER, y el IP es 192.168.1.11. Si buscas en el Administrador de IIS, esta es la estructura del sitio:

(Default Website) (root) 
    - PRODUCTION (vDir) 
    - CONTENT (not a vDir) 
    - DATAFOLDER (vDir, contains MVC app, just added by me, not working) 

Lo extraño es que cuando escribo la siguiente dirección URL de un navegador en el servidor funciona:

http://localhost/DATAFOLDER/account.aspx 
http://127.0.0.1/DATAFOLDER/account.aspx 
http://192.168.1.11/DATAFOLDER/account.aspx 

El siguiente URL (que es la que tengo que trabajar) no:

http://CWEBSERVER/DATAFOLDER/account.aspx 

el error que estoy recibiendo es "el recurso no puede ser encontrado."

Después de mirar más de cerca, me di cuenta de que las solicitudes a http://CWEBSERVER van a la producción vdir, pero pide a http://localhost o http://192.168.1.11 van a la raíz del sitio web. Supongo que esto es algo configurado por el diseñador original del sitio. No estoy seguro de cómo cambiar esta configuración, pero no creo que pueda cambiarla de todos modos porque en realidad hay una tonelada de otros directorios que se verán afectados. La otra cosa que quería señalar es esto: se puede acceder a la carpeta CONTENT yendo al http://CWEBSERVER/CONTENT. Esto es realmente extraño ya que pensé que el http://CWEBSERVER me apuntaba a la raíz, por lo que no creo que el "/ CONTENIDO" realmente pueda llegar a la carpeta CONTENIDO.

Ahora mi problema es este: ¿cómo puedo obtener mi DATAFOLDER accesible a través de http://CWEBSERVER/DATAFOLDER? Creo que debería poner DATAFOLDER vDir dentro de de PRODUCTION vDir. Lo probé, y el uso de la máquina local o IP esto sigue siendo accesible a través de:

http://localhost/PRODUCTION/DATAFOLDER/account.aspx 
http://127.0.0.1/PRODUCTION/DATAFOLDER/account.aspx 
http://192.168.1.11/PRODUCTION/DATAFOLDER/account.aspx 

Cuando uso CWEBSERVER, sin embargo, todavía falla:

http://CWEBSERVER/DATAFOLDER/account.aspx 

El error sigue siendo "El recurso no puede ser encontró.". ¿Alguien puede arrojar algo de luz sobre esto? En concreto, tengo las siguientes preguntas:

  1. ¿Cómo http://localhost ir a la raíz, y http://CWEBSERVER ir a la producción vdir? ¿Dónde puedo cambiar esta configuración?
  2. ¿Por qué funcionaría "http://localhost/PRODUCTION/DATAFOLDER/account.aspx" pero no "http://CWEBSERVER/DATAFOLDER/account.aspx"?

La respuesta aceptada a esta pregunta (a quién se otorgará la recompensa) tendrá que poder hacerla para poder acceder al http://CWEBSERVER/DATAFOLDER/account.aspx. ¡Gracias!

+0

¿Qué error es usted que consigue? –

+0

ping cwebserver y use esa dirección IP en su url y vea si eso funciona. esto le dirá si es un problema de dns/firewall o si es un problema de iis –

Respuesta

11

Lo más probable es que tenga IIS vinculado solo a la dirección IP. Vaya a Administrador de IIS, luego vaya a propiedades en el sitio web. Luego, desde la pestaña del sitio web, vaya a propiedades.

Agregue una identidad para ese valor de encabezado de host.

Si es necesario, puede agregar enlaces múltiples.

actualización

creo que sé lo que quieres ahora. Desde el Administrador de IIS, expanda su sitio web predeterminado. A continuación, haga clic derecho en el directorio virtual de producción y seleccione "Crear directorio virtual". Llame a este nuevo DATAFOLDER. Luego vincule esto a la ubicación existente en su sistema de archivos.

Realmente creo que necesitas limpiar esto un poco. Lo primero que haría es decidir cómo se supone que se debe acceder a todo. En otras palabras, cuando escriben http://www.mysite.org/ ¿Qué se supone que es? Si es el directorio PRODUCTION, cree un nuevo sitio y lo dirija al directorio PRODUCTION, luego cree su aplicación virtual DATAFOLDER debajo de él.

+0

Gracias por la sugerencia. Cuando miro la lista de identidades, todo lo que veo es "Predeterminado" para el puerto 80. También agregué un montón más de información que encontré. ¡GRACIAS POR TU AYUDA! ESTOY MUY AGRADECIDO POR CUALQUIER COSA QUE ME PUEDA DECIR. – skb

+0

Gracias por su actualización, Chris. Traté de agregar DATAFOLDER vDir bajo PRODUCTION vDir, pero por alguna razón todavía no puedo acceder usando www.mysite.org/DATAFOLDER. localhost/PRODUCTION/DATAFOLDER sin embargo funciona. Creo que podría ayudar si primero pudiera descubrir por qué www.misitio.org se dirige a PRODUCTION vDir, pero localhost va a la raíz del sitio web. Tal vez si pudiera entender esta diferencia, podría ver qué es lo que hace que las cosas aún no funcionen. ¿Algunas ideas? – skb

+0

Realmente debería comenzar de nuevo con sus enlaces. Parece que se estableció un directorio virtual para PRODUCTION cuando no debería haberlo sido. Comience con un nuevo sitio, dele a este el enlace de www.mysite.org y señálelo a su directorio de PRODUCCIÓN. A continuación, agregue un directorio virtual debajo que apunta a su carpeta de datos. – NotMe

0

complemento '192.168.1.11 cwebserver' a% windir%/system32/drivers/etc/hosts

+1

Gracias, pero este no es el problema. También debe ser accesible desde muchas otras máquinas. – skb

1

hacer como Chris Lively dicho y añadir más fijaciones para los otros nombres de host o agregar un nuevo sitio con ajustes a la mismo contenido. IIS responde al ver la información del encabezado del host y si solo tiene el Sitio web predeterminado con un enlace único al puerto 80, no manejará todos los posibles encabezados.

Si el nombre es interno para su empresa, como el nombre de la máquina o una entrada DNS interna, puede salirse con la suya haciendo que el enlace predeterminado haga el trabajo. Si no funciona en las pruebas, agregue un enlace para esa situación (CWEBSERVER o mysite.org). Pruébelo con y sin www si le interesa trabajar en ambos sentidos.

No hay muchas desventajas al agregar varios "sitios" en IIS para el mismo contenido. Por ejemplo, usted puede

mysite.org señaló /PRODUCTION/DATAFOLDER/index.html

y

marketingsite.com señaló a /PRODUCTION/DATAFOLDER/index.html

A continuación, puede hacer cosas como tener diferentes configuraciones SSL, etc. En mi servidor web, nada entra en el Sitio web predeterminado a menos que algo salga mal (como configurar una nueva dirección IP externa y aún no haber modificado los enlaces).

Elija su veneno pero básicamente solo tiene que agregar configuraciones en IIS hasta que maneje todas las direcciones posibles de la manera que desee.

+0

Estoy tratando de hacer lo contrario de lo que te refieres. No quiero múltiples "sitios" para el mismo contenido, quiero que el contenido dispar se "fusione" en un solo sitio. Tengo un sitio predeterminado. Este sitio tiene un vDir de PRODUCCIÓN al cual apunta "www.misitio.org" (por cierto, no puedo entender cómo este vDir termina siendo la "raíz" de "www.misitio.org" pero para "localhost" es no, no veo una configuración para esto para el vDir o el sitio). No me importa el servidor local, solo necesito que mysite.org/DATAFOLDER señale un vDir por separado. es posible? – skb

5

Aunque no he revisado toda la lista de respuestas, encontré esta solución de la siguiente manera. Los enlaces de mi página web funcionan con localhost pero no con un nombre de IP o computadora. No tiene ningún error, especialmente con GREAT IE (****).

Para solucionar esto agregué el sitio en SITIOS DE CONFIANZA de IE.

¡Puede ser que ayude a reducir algo de frustración!

+0

Sí, detiene la frustración. ¡Gracias! – DrCord

2

Tuve un problema similar que se resolvió asignando una IP estática a mi servidor IIS temporal. (Le asigné la misma dirección IP que la que se asignó dinámicamente, que era 192.168.56.101.)

Que esto ayude a alguien.

También verifique this para la configuración del firewall.

1

Para mí fue un problema de cortafuegos:

  1. Ir a: Panel de control -> Firewall de Windows -> Permitir un programa o una característica a través de Firewall de Windows

  2. Vaya al final de la lista y seleccione la casilla de verificación para los servicios de www (http).

  3. Guardar

Ahora puedo acceder http://computername.domain nombre

Cuestiones relacionadas