J'ai un formulaire Web que j'essaie d'implémenter des listes déroulantes dynamiques sur l'utilisation des extensions .NET AJAX 1.0. J'ai implémenté avec succès les bits nécessaires, mais j'ai une bizarrerie intéressante..NET AJAX 1.0 Aysc Callback modifie l'action de formulaire lors de l'utilisation de Server.Transfer
Lorsque je sélectionne une valeur dans ma première liste déroulante, mon rappel se produit et ma page est mise à jour correctement. La valeur suivante que je sélectionne, je reçois l'erreur suivante:
Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned was: 404
Reguarless de ce contrôle que j'utilise d'abord, les premiers travaux de demande et le second ne fonctionne pas. En regardant mes journaux IIS, je vois les lignes suivantes:
2008-10-17 14:52:14 W3SVC1 127.0.0.1 POST /Aware/Xtend/mParticipant/NewPlannedService.aspx WIN=Participant_1224255079212&Title=Participant 80 - 127.0.0.1 200 0 0
2008-10-17 14:52:20 W3SVC1 127.0.0.1 POST /Aware/mParticipant/NewPlannedService.aspx WIN=Participant_1224255079212&Title=Participant 80 - 127.0.0.1 404 0 0
Comme vous pouvez le voir mon URL de poste a complètement changé. En utilisant Fiddler pour regarder la demande/réponse, je peux voir dans la réponse du serveur:
|formAction||NewPlannedService.aspx|
C'est tout simplement le nom de la page qui est en cours d'exécution, le chemin relatif et la chaîne de requête a été déposé .
Je peux résoudre ce problème en ajoutant ce qui suit à la fin de ma méthode de rappel Async:
this.Form1.Action = Request.Url.PathAndQuery
Mais cela semble incroyablement boiteux et des odeurs un peu comme du fromage moisi pour moi. Est-ce que quelqu'un peut-il me montrer la bonne direction? Après une inspection plus poussée, j'ai découvert que NewPlannedService.aspx n'était pas la page d'exécution d'origine. Page1.aspx était en cours d'exécution, puis appelé Server.Transfer ("/ folder/NewPlannedService.aspx"). Ainsi, l'URI dans le navigateur était http://whatever.com/Page1.aspx, mais la page réelle qui a été executé http://whatever.com/folder/NewPlannedService.aspx