2010-06-09 10 views
2

Je dois rendre une page ASP à une chaîne à partir d'une action du contrôleur MVC. Je peux utiliser Server.Execute() pour afficher une page .aspx, mais pas une page .asp.Server.Execute - Rend .ASP à partir de l'action du contrôleur MVC

Voici ce que j'utilise:

public ActionResult Index() 
    { 
     Server.Execute("/default.asp"); 
     return new EmptyResult(); 
    } 

qui retourne

`No http handler was found for request type 'GET'` 

Toutes les suggestions? Je peux faire quelque chose de similaire avec une requête web, mais je préfère éviter la surcharge d'une requête de bouclage.

+0

Quelle version d'IIS utilisez-vous? Si 7 utilisez-vous un pipeline intégré? – AnthonyWJones

+0

Oui, IIS 7. Mes serveurs de production exécutent IIS6 sur Win2k3. –

Répondre

1

La dernière fois que j'ai vérifié, lors de l'exécution dans un contexte ASP.NET 3.5 ou 4.0 et à l'aide d'ASP.NET, Server.Execute n'exécutera pas une page .ASP car il n'y a pas de ASP.NET httpHandler configuré pour l'héritage. Pages ASP. Ce que je ferais est d'utiliser un WebRequest pour exécuter la page .ASP et stocker les résultats, puis vider la sortie de chaîne de la réponse à une chaîne, puis vider cette chaîne lorsque la méthode de contrôleur est exécutée. De cette façon, vous pouvez même exécuter une page .ASP sur un serveur différent (Server.Execute n'est PAS compatible avec la batterie!)

+0

C'est ce que je voulais dire par "demande de bouclage". Cela fonctionne, mais implique évidemment des frais généraux supplémentaires. –

0

Utilisez Server.TransferRequest() au lieu de .Execute() et cela devrait fonctionner. Et si cela ne fonctionne pas dans le contrôleur, mettez-le dans vos vues, comme ceci:

@{Server.TransferRequest("/default.asp");}

Questions connexes