如何在ASPX.VB函数内调用ASHX?

时间:2009-02-24 17:41:32

标签: asp.net vb.net ashx

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

2 个答案:

答案 0 :(得分:4)

你有几个选择

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

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

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

    基本上是的......不是在你的处理程序中有一堆代码,而是在上下文中创建一个对你有意义的类。在该类中,您可以放置​​处理程序中的逻辑。然后从您的处理程序中,您可以创建一个实例或调用该类的静态版本(取决于您实现它的方式),将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 :(得分:1)

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

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