ASHX で作成した API から値を取得する必要があり、通常は JavaScript から呼び出されますが、ASP.NET で正しく呼び出す必要があります。これは問題ではないと考えましたが、構文がわかりません。
2 に答える
いくつかのオプションがあります
- ASHX のコードを共有ライブラリにリファクタリングして、メソッドやハンドラーに直接アクセスできるようにすることができます。
- メンバーがプライベートでない場合は、ハンドラーをインスタンス化し、メンバーを呼び出すことができます。
- ハンドラへの Web リクエストを作成し、レスポンスを処理できます。
これらは簡単な方法のほんの一部です。
個人的には、コードの再利用を促進する最初の方法が好きですが、シナリオによっては、好きなことを行うことができます。
コメントで質問の回答を提供するように編集します。
基本的にはい...ハンドラーに大量のコードを含める代わりに、文脈上意味のあるクラスを作成します。そのクラス内に、ハンドラーにあったロジックを配置します。次に、ハンドラーからインスタンスを作成するか、(実装方法に応じて) クラスの静的バージョンを呼び出して、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 に変更しました。申し訳ありません。
ASHX が同じサーバー上にある場合、特に同じ Web アプリ内にある場合は、ロジックを ashx からリファクタリングして、aspx と ashx の両方が呼び出すことができる共通のクラスにする必要があります。
それ以外の場合は、次を使用して見ることができます: System.Net.WebClient