我正在将一个旧的VBScript WSC组件重写成一个更好的C# COM组件。
由于某种可怕的原因,旧组件在某个地方使用IServer通过传递Server Context来运行。
Set objCurr = CreateObject("MTxAS.AppServer.1")
Set objCurrObjCont = objCurr.GetObjectContext()
Set component.servercontext = objCurrObjCont("Server")
这样就可以使用标准的Server.MapPath("/somelocation")
。
然而,在 .Net COM 组件中,我不知道该怎么做,因为没有 Web 上下文,所以 System.Web.HttpContext.Current.MapPath()
无法按预期工作。
我尝试将 Classic ASP 中的上下文传递到 COM 组件中,但我不确定要包含哪个引用才能调用正确的成员。Microsoft.ActiveXDataObjects2.7 似乎是一个常见的引用,但它只包括 Recordsets 等内容,没有 C++ IServer 接口,因此只会显示为 COM OBJECT
。
有人知道如何解决这个问题吗?如果继续这样做,我觉得可能需要改变组件的行为。