2009-02-24 8 views
1

Je dois obtenir une valeur à partir d'une API que j'ai faite avec ASHX et normalement il est appelé depuis javascript mais j'ai besoin de l'appeler correctement dans ASP.NET Je pensais que cela ne devrait pas poser de problème mais je ne suis pas sûr .Comment appeler un ASHX depuis une fonction ASPX.VB?

Répondre

4

Eh bien, vous avez un couple d'options

  1. Vous pouvez Refactor le code dans votre ASHX être dans une bibliothèque partagée afin que vous puissiez accéder aux méthodes directement et ne peut donc le gestionnaire.
  2. Vous pouvez instancier le gestionnaire et appeler les membres s'ils ne sont pas privés.
  3. Vous pouvez créer un Webrequest pour le gestionnaire et gérer la réponse.

Voici quelques-unes des solutions simples.

Personnellement, j'aime la première méthode, car elle favorise la réutilisation du code, mais selon le scénario, vous pouvez faire ce que vous voulez.

Modifier pour fournir des réponses à une question dans un commentaire.

Essentiellement Oui ... Au lieu d'avoir un tas de code dans votre gestionnaire, vous créez une classe appelée contextuelle. Dans cette classe, vous placez la logique qui était dans votre gestionnaire. Ensuite, à partir de votre gestionnaire, vous pouvez créer une instance ou appeler une version statique de la classe (en fonction de la manière dont vous l'avez implémentée) en lui passant l'objet HttpContext ou tout ce qui est requis pour que cette logique s'exécute correctement. Faites la même chose dans votre page ASPX. Vous pouvez désormais appeler un objet qui contient la logique de n'importe où dans votre application au lieu de la placer dans le gestionnaire seul.

EX:

Public Class MyCommonLogic 
    Public Shared Function ReturnSomethingCommon(context As HttpContext) As String 
     Return "Hello World!" 
    End Function 
End Class 

Ensuite, à partir du gestionnaire ou de la page ASPX ..

Dim something As String = MyCommonLogic.ReturnSomethingCommon(...) 

J'ai fait la fonction statique, mais qui est juste un exemple bien sûr je mettre en œuvre serait cependant faire plus de sens dans votre scénario.

Le code a été modifié pour VB désolé à ce sujet.

+0

J'aime idée 1 mais je ne suis pas sûr de ce que cela veut dire, je fais une nouvelle classe qui a tout le code, puis dans le ashx au lieu de avoir le code je viens de créer une nouvelle instance de la classe que j'ai faite et transmettre les valeurs aux fonctions de cet objet droit? – BigOmega

+0

Je vais élaborer dans un montage. –

1

Si l'ASHX se trouve sur le même serveur, surtout s'il se trouve dans la même application Web, vous devez refactoriser votre logique hors de l'ashx dans une classe commune que les deux aspx et ashx peuvent appeler.

Sinon, vous pouvez regarder à l'aide: System.Net.WebClient

Questions connexes