Documento por defecto del sitio asp.net en subcarpeta
Pregunta
Mi documento predeterminado está en la subcarpeta, no en la raíz, ¿cómo puedo hacerlo predeterminado en el sitio web asp.net 2.0?
Intenté la configuración predeterminada del documento iis7 en '/pages/default.aspx' '~ / pages / default.aspx' pero no funcionó.
Solución
El documento predeterminado no es lo mismo que la página de inicio. Documento predeterminado significa que si solicité mysite.com/somefolder
y no especifiqué un archivo, qué archivo debería mostrar IIS.
Si desea usar una página específica como su página de inicio, cree un archivo Default.aspx y escríbalo en su clase de código:
public override void ProcessRequest(HttpContext context) {
context.Response.Redirect("pages/default.aspx", true);
}
Como el cliente podría haber deshabilitado Javascript, un enfoque del lado del servidor sería más confiable. Sin embargo, es mejor emitir una redirección permanente en lugar de una simple Response.Redirect
. También hacerlo usando JS será malo desde el punto de vista de SEO.
Otros consejos
No es necesario crear una página Default.aspx ficticia.
En su archivo Global.asax.cs, escriba lo siguiente:
public void Application_Start(object sender, EventArgs e)
{
var routeCollection = RouteTable.Routes;
routeCollection.MapPageRoute("DefaultRoute", string.Empty, "~/YourDesiredSubFolder/YourDesiredDocument.aspx");
}
Explicación:
- Se garantiza que el código Application_Start se ejecute una vez y solo una vez en el inicio de la aplicación.
- La primera línea de código, obtiene una colección de las rutas URL para su aplicación.
- La segunda línea de código, define una nueva ruta que apunta a su página interna en la subcarpeta que desea.
- El segundo argumento está vacío para indicar que esta ruta se usa cuando no se solicita una página específica y no existe un documento predeterminado.
Los documentos predeterminados son una cosa específica de la subcarpeta: lo que intentas hacer no funciona (directamente). Configura un archivo default.htm en la raíz y haz que se actualice a tu " página de inicio " ;.
La mejor pregunta que deberías hacerte es cómo en el mundo tu página de inicio salió del directorio raíz.
En teoría, podría tener un archivo Web.config dentro del directorio y usar defaultDocument element para establecer el documento predeterminado. Consulte aquí: https://stackoverflow.com/a/2012079/125938 .
Desafortunadamente, no he podido hacer que funcione de forma local, pero es posible que porque no esté admitido en el servidor de desarrollo de Visual Studio.
Diga " index.html " es la página predeterminada que desea y está presente en " Público " subcarpeta.
En lugar de especificar " /Public/index.html" como el sitio predeterminado, intente " Public / index.html "