1

我需要从我用 ASHX 制作的 API 中获取一个值,通常它是从 javascript 调用的,但我需要在 ASP.NET 中直接调用它我认为这应该不是问题,但我不确定语法。

4

2 回答 2

4

那么你有几个选择

  1. 您可以将 ASHX 中的代码重构为共享库中,这样您就可以直接访问方法和处理程序。
  2. 如果成员不是私有的,您可以实例化处理程序并调用它们。
  3. 您可以向处理程序创建 webrequest 并处理响应。

这些只是一些简单的方法。

我个人喜欢第一种方法,因为它促进了代码重用,但根据场景你可以做你喜欢的事情。

编辑以提供评论中问题的答案。

本质上是的...不是在您的处理程序中包含一堆代码,而是创建一个在上下文中对您有意义的类。在该类中,您可以放置​​处理程序中的逻辑。然后从您的处理程序中,您可以创建一个实例或调用该类的静态版本(取决于您如何实现它)将 HttpContext 对象或该逻辑正确运行所需的任何内容传递给它。在您的 ASPX 页面中执行相同的操作。您现在可以从应用程序中的任何位置调用包含逻辑的对象,而不是将其单独驻留在处理程序中。

前任:

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 对此感到抱歉。

于 2009-02-24T17:44:58.233 回答
1

如果 ASHX 在同一台服务器上,尤其是在同一个 Web 应用程序中,您应该将 ashx 中的逻辑重构为 aspx 和 ashx 都可以调用的公共类。

否则你可以看看使用: System.Net.WebClient

于 2009-02-24T17:45:53.737 回答