2

谁能告诉我是否可以将 Response 对象从经典 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

要访问包括响应在内的经典 ASP 对象,您可以在 C# 项目中将 COM 引用添加到“Microsoft Active Server Pages Object Library”。

然后,您可以从 C# 将其引用为:

ASPTypeLibrary.Response
于 2012-09-11T09:09:21.527 回答
1

Response 对象是一个支持 IUnknown 和 IDispatch 的 COM 对象。因此,您可以将其作为对象传递给方法并使用反射调用属性。

从我自己的机器上看, Typelib UUIDIReponse 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 回答