我需要从我用 ASHX 制作的 API 中获取一个值,通常它是从 javascript 调用的,但我需要在 ASP.NET 中直接调用它我认为这应该不是问题,但我不确定语法。
Ryan
问问题
5607 次
2 回答
4
那么你有几个选择
- 您可以将 ASHX 中的代码重构为共享库中,这样您就可以直接访问方法和处理程序。
- 如果成员不是私有的,您可以实例化处理程序并调用它们。
- 您可以向处理程序创建 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 回答