Q150777 INFO: Descriptions and Workings of OLE Threading Models(英文) 安全性 建议 组件不应对它运行的用户环境做任何假设。不要访问用户专用信息,如 HKEY_CURRENT_USER,或桌面计算机的专用资源,因为这些对组件来讲是不可用的。应用程序也不要使用 SendKeys 或调用依赖用户界面的组件,执行通常需要桌面交互的操作,如打开对话框。
Q248348 PRB: SaveSetting and GetSetting Not Available in Visual Basic 6.0 Webclass (IIS Application)(英文) 当从 ASP 而不是从桌面客户机调用组件时,打印机、MAPI 信息和网络共享通常“失效”。
有关详细内容,请参阅下面的 KB 文章:
Q184291 PRB: COM Objects Fail to Print When Called From ASP(英文) Q217144 INFO: Difficulties Using Net APIs in ISAPI and ASP COM Objects(英文) Q207671 HOWTO: Accessing Network Files from IIS Applications(英文) 详细信息 有关安全性的几点考虑:
启用哪种 IIS 身份验证方法? 您的 Web 应用程序是进程内的还是进程外的? 如果组件以 MTS 或 COM+ 注册,它是在“服务器”上还是在库软件包中? 您正在调用本地 DLL、远程 DLL、本地 EXE、远程 EXE 吗? 有关安全性的详细说明超出了本文的范围。但是,由于这个主题的复杂性,下面的文章对从 ASP 组件角度理解问题有很大帮助:
Securing a Web-based Microsoft Transaction Server Application(英文) Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions(英文) Q217202 PRB: CGI Applications and IIS OOP Applications May Fail(英文) 下文很好地概述了 IIS 如何处理安全性:
Authentication and Security for Internet Developers(英文) Server.CreateObject 与 CreateObject 建议 使用 Server.CreateObject。如果正在使用 MTS/COM+ 库软件包,请使用 Server.CreateObject 来避免线程阻塞。
ASP 不能识别该对象。 OnStartPage/OnEndPage 页面方法没有调用。 ASP 不知道对象的线程模型。 Server.CreateObject 相当于 GetObjectContext.CreateInstance。这表示 ASP 清楚该对象并知道它的线程模型。另外,如果 ASP 页面是事务性的,则通过调用 Server.CreateObject 可使组件与 ASP 页面在同一事务中。(请注意,事务性的页面可能意味着可避免的业务规则与表达层的耦合。)
常见的陷阱 如果对象处于防火墙后面,可能需要调用 CreateObject。请参阅 Q193230 PRB: Server.CreateObject Fails when Object is Behind Firewall(英文) 以获得详细信息。