Как я могу вызвать ASHX из функции ASPX.VB? - PullRequest
1 голос
/ 24 февраля 2009

Мне нужно получить значение из API, который я создал с помощью ASHX, и обычно оно вызывается из javascript, но мне нужно вызвать его прямо в ASP.NET. Я подумал, что это не должно быть проблемой, но я не уверен, что синтаксис.

Ответы [ 2 ]

4 голосов
/ 24 февраля 2009

Ну, у вас есть пара вариантов

  1. Вы можете реорганизовать код в ASHX в общую библиотеку, чтобы вы могли получить прямой доступ к методам, как и обработчик.
  2. Вы можете создать экземпляр обработчика и вызвать членов, если они не являются частными.
  3. Вы можете создать веб-запрос к обработчику и обработать ответ.

Это лишь несколько простых способов.

Мне лично нравится первый метод, потому что он способствует повторному использованию кода, но в зависимости от сценария вы можете делать то, что вам нравится.

Изменить, чтобы предоставить ответы на вопрос в комментарии.

По сути, да ... Вместо того, чтобы иметь кучу кода в вашем обработчике, вы создаете класс, называемый чем-то значимым для вас в контексте. Внутри этого класса вы помещаете логику, которая была в вашем обработчике. Затем из вашего обработчика вы можете создать экземпляр или вызвать статическую версию класса (в зависимости от того, как вы его реализовали), передав ему объект HttpContext или все, что требуется для корректной работы этой логики. Сделайте то же самое на своей странице ASPX. Теперь вы можете вызывать объект, который содержит логику из любого места вашего приложения, вместо того, чтобы размещать его в одном обработчике.

EX:

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

Затем из обработчика или страницы aspx ..

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

Я сделал функцию статической, но это всего лишь пример, я бы ее реализовал, однако в вашем сценарии было бы больше смысла.

Изменил код на VB, извините за это.

1 голос
/ 24 февраля 2009

Если ASHX находится на одном и том же сервере, особенно если он находится в одном и том же веб-приложении, вы должны преобразовать свою логику из ashx в общий класс, который могут вызывать aspx и ashx.

В противном случае вы можете посмотреть с помощью: System.Net.WebClient

...