如何将传统ASP响应对象传递给C#DLL
问题描述:
任何人都可以告诉我是否可以将Response对象从传统asp传递到C#类库,如果可以的话是如何实现的。如何将传统ASP响应对象传递给C#DLL
我在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);
答
要访问包括Response的传统ASP对象,可以在C#项目中将COM引用添加到“Microsoft Active Server Pages Object Library”。
然后,您可以从C#作为参考吧:
ASPTypeLibrary.Response
答
响应对象是COM object that supports IUnknown and IDispatch。因此,您可以将它作为对象传递给方法,并使用反射调用属性。
从我自己的机器上看,IReponse IID
是{D97A6DA4-D5F5-4763-9BE5-60126DD39E43}
Typelib UUID是{A79CBB28-1006-4227-BE61-CBEE2520C353}
。如果您打开regedit并导航至HKEY_CLASSES_ROOT\TypeLib\{A79CBB28-1006-4227-BE61-CBEE2520C353}\2.0\0\win32
,那么默认密钥将包含可导入的用于创建互操作程序集的Typelib的路径。
整个对象,或者它只是一些部分,像查询字符串? – tomfanning
整个对象,我想在我的dll中使用它输出到http上下文 – Graham