2

応答オブジェクトをクラシックaspからC#クラスライブラリに渡すことが可能かどうか、また可能であればどのように行われるかを誰かに教えてもらえますか?

ASPでC#2010 ExpressとJScriptを使用していますが、VBScriptの回答を使用します。

または、dllからクラシックaspページのhttpコンテキストに出力する別の方法がある場合は、それも実行されます。

System.Web.HttpResponseオブジェクトがクラスライブラリから利用できないように見えるため、これは実行できないと思います。

回答してくださった方々、ありがとうございました。同じ質問をする可能性のある他の人への完全な答えとして、ここにいくつかのサンプルコードがあります:

public string passObj(ASPTypeLibrary.Response r)
{
    r.Write("text from DLL");
    return "OK";
}

そして、物事の古典的なasp側で:

var x = Server.CreateObject("dllTest.test");
x.passObj(Response);
4

2 に答える 2

6

Responseを含む従来のASPオブジェクトにアクセスするには、C#プロジェクトのCOM参照を「MicrosoftActiveServerPagesオブジェクトライブラリ」に追加します。

次に、C#から次のように参照できます。

ASPTypeLibrary.Response
于 2012-09-11T09:09:21.527 に答える
1

Responseオブジェクトは、IUnknownとIDispatchをサポートするCOMオブジェクトです。したがって、それをオブジェクトとしてメソッドに渡し、リフレクションを使用してプロパティを呼び出すことができます。

自分のマシンを見ると、 TypelibUUIDはIReponse IIDです。regeditを開いてデフォルトのキーに移動すると、相互運用機能アセンブリを作成するためにインポートできるTypelibへのパスが含まれます。{D97A6DA4-D5F5-4763-9BE5-60126DD39E43}{A79CBB28-1006-4227-BE61-CBEE2520C353}HKEY_CLASSES_ROOT\TypeLib\{A79CBB28-1006-4227-BE61-CBEE2520C353}\2.0\0\win32

于 2012-09-11T09:09:14.463 に答える