2013-02-25 3 views
2

je le scénario suivant pour mettre en œuvre:redirigeant les appels à différentes applications web

  • demande utilisateur /HR/Employee/Get sur le site principal (localhost:80)
  • HR est le nom d'une application hébergée dans IIS sur un autre port (disons localhost:8081), ou il pourrait être déployé sur un autre serveur du réseau.
  • L'URL est intercepté et mis en correspondance avec https://localhost:8081/HR/Employee/Get (j'ai réussi à obtenir ce travail)
  • Maintenant je dois transférer/rediriger l'appel vers l'URL cible, puis renvoyer le résultat au client (navigateur dans ce cas).

J'ai essayé d'utiliser Server.TransferRequest mais cela ne fonctionne que si je transfère vers un itinéraire dans le même domaine. Est-il possible que je puisse faire ce travail sans avoir à émettre une autre requête HTTP à l'URL cible? Je veux simplement que le site sur le port 80 agisse comme un proxy inverse ou quelque chose comme ça.

Des idées?

+1

Je pense que Server.Transfer (demande) est destiné uniquement pour rediriger dans votre application web, donc Je suppose que vous devrez utiliser Response.Redirect pour rediriger vers des pages externes. – Hanno

+0

@Hanno: exactement. 'Server.Transfer',' Context.RewritePath' sont autorisés à réécrire les chemins avec la même application web seulement. – Alex

+0

@Alex et Hanno, oui vous deux avez raison, c'est pourquoi j'ai posé cette question en premier lieu. Y a-t-il un moyen de surmonter cette limitation? – Kassem

Répondre

0

essayer RedirectPermanent, cela fera un 301 redirect

public ActionResult Get() 
{ 
    return RedirectPermanent("https://localhost:8081/HR/Employee/Get"); 
} 

vous pouvez également utiliser RedirectToActionPermanent et RedirectToRoutePermanent

+0

Non, n'a pas fonctionné. – Kassem

Questions connexes