donc c'est le scénario:Comment faire un server.transfer() avec un Response.AddHeader ("refresh", "secondes") et ne pas obtenir une erreur 404?
J'ai une classe de base pour toutes les pages contrôlées connexion-:
public class SessionControlledPage : Page
{
protected virtual void Page_Load(Object sender, EventArgs e)
{
Response.AddHeader("Refresh", Convert.ToString(Session.Timeout * 60 + 5));
if (Session.IsNewSession)
{
Response.Redirect("~/login.aspx");
}
}
}
Et une page regularpage.aspx
qui inherints de la classe de base:
public partial class RegularPage : SessionControlledPage
{
override protected void Page_Load(Object sender, EventArgs e)
{
base.Page_Load(sender, e);
Server.Transfer("~/otherpage.aspx");
}
}
maintenant disons que l'URL d'origine était http://localhost/regularpage.aspx et que Session.Timeout = 5
. Le problème apparaît lorsque l'actualisation se produit après le transfert. J'obtiens une erreur 404 Not Found
et l'URL change pour http://localhost/305. Notez que 5 * 60 + 5 = 305
.
Savez-vous pourquoi cela se produit-il? avez une solution? PD: J'utilise le transfert car j'ai besoin d'accéder à certaines propriétés de regularpage.aspx sur otherpage.aspx, peut-être pourriez-vous fournir une autre solution pour cela.
merci Bryan, en réalité le server.transfer() n'est pas dans le page_load est sur une autre méthode (ceci est un exemple) et cette méthode est appelée après une recherche est effectuée sur la page et un résultat est cliqué, j'utilise le informations associées au lien pour le transmettre à l'autre page. J'appelle base.Page_Load() parce que je surcharge la méthode Page_Load de ma classe de base, et aussi en raison de l'ordre d'exécution sur le cycle de vie des pages, le code dans le Page_Load enfant s'exécuterait avant le Page_Load sur la classe parent, J'ai besoin du code parent Page_Load pour exécuter avant pas après. – Unlimited071
@Brian pouvez-vous s'il vous plaît m'en dire plus sur la logique métier abstraite et comment pourrais-je l'utiliser? J'ai juste besoin de quelques informations simples de la "page normale" fondamentalement 3 codes entiers. Merci. – Unlimited071
Il est impossible de vous dire comment faire ceci sans savoir ce que vous essayez de faire. Mais en général, toute application ASP.NET bien conçue fera le moins possible dans le code de la couche de présentation et déchargera les tâches dans une couche de logique métier. 265 caractères ne suffisent pas à expliquer cela! Avez-vous résolu le problème original? Vous n'avez pas répondu à ce sujet ... – Bryan