【问题标题】:How do I call an ASHX from inside an ASPX.VB function?如何从 ASPX.VB 函数内部调用 ASHX?
【发布时间】:2010-10-09 15:00:23
【问题描述】:

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

【问题讨论】:

    标签: asp.net vb.net ashx


    【解决方案1】:

    你有几个选择

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

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

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

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

    基本上是的...您无需在处理程序中包含一堆代码,而是创建了一个类,该类在上下文中对您有意义。在该类中,您可以放置​​处理程序中的逻辑。然后从您的处理程序中,您可以创建一个实例或调用该类的静态版本(取决于您如何实现它)将 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 抱歉。

    【讨论】:

    • 我喜欢想法 1,但我不确定这意味着什么,我创建了一个包含所有代码的新类,然后在 ashx 中而不是拥有代码,我只是创建了一个新的实例我创建的类并将值传递给该对象的函数对吗?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 2017-03-05
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多