标签: createobject

Coldfusion CreateObject() 返回错误对象的实例

我遇到了一个似乎只影响我们的生产服务器的问题,没有任何明显的规律或原因。本质上,我们收到以下错误(我将使用虚拟名称来说明这一点):

消息:在组件 Components.services.SomeComponent 中找不到方法 someFunction,在任何实现接口中也没有任何具有此名称的默认方法。

这种情况发生在代码库中的几行不同的地方,但一旦被抛出,它就永远不会再超过该点,直到清除 CFADMIN 中的组件缓存。关键在于:代码中的违规行如下所示:

<cfset var a = createObject("Components.services.app.ComponentA").someFunction() >

似乎createObject对 create ComponentA 的调用返回的是SomeComponent的实例。我尝试过以下方法:

  • 本节中的 CreateObject 调用一直使用动态创建的字符串作为组件路径...我想也许有些东西被污染了,所以现在Components.services.app.ComponentAComponents.services.app.ComponentB等等...都是硬编码的
  • 我尝试使用new语法而不是createObject
  • 我认为组件缓存变得混乱的路径可能有问题,所以我创建了一个映射到./Components/services/app调用(例如)“app”,这样我就可以创建像这样的对象new app.ComponentA()而不是new Components.services.app.ComponentA

似乎没有什么帮助——这些在我们的 UAT 或任何人的开发环境中都无法重现,并且在生产中是间歇性的,但是,一旦抛出,服务器就完成了。清除 CFADMIN 中的组件缓存可以暂时修复它,直到几个小时后有人再次随机抛出它。

一些额外的警告:

  • 当我们移动和洗牌试图找到此问题的原因时,特定的行号和组件似乎发生了变化,但行为始终相同 -new ComponentC()是创建someComponent...new ComponentA()而不是创建someOtherComponent
  • 这种情况只发生在我们的代码库的一个特定部分,与我们的代码的其余部分相比,该部分使用了大量的对象继承。我们进行了彻底梳理,以确保不存在任何循环引用或类似内容,并且邪恶组件 ( someComponent, someOtherComponent) 是位于此目录之外的 CFC
  • 事实上,清除组件缓存似乎可以解决这个问题,这确实让我对组件缓存产生了怀疑……我只是对 CF 的了解不够,无法理解为什么缓存可能会返回与以下对象不同的对象的实例:它正在呼叫的那个

后续步骤(这些都不理想):

  • 完全禁用组件缓存,不想承受性能损失
  • 添加一些荒谬的代码,以便在抛出无效方法名称错误时以编程方式清除组件缓存

是否有某种方法可以精细地排除从组件缓存中检索某些 CFC,并在调用 …

coldfusion cfc createobject coldfusion-2021

6
推荐指数
1
解决办法
179
查看次数

以编程方式启动Visual Studio; C#相当于VB的CreateObject("VisualStudio.DTE.8.0")

我可以从VBScript启动一个新的隐藏Visual Studio进程,并通过以下方式以编程方式驱动它:

Set DTE = CreateObject("VisualStudio.DTE.8.0")
DTE.DoStuff()
Run Code Online (Sandbox Code Playgroud)

我如何在C#中做到这一点?(编辑:使用正确的类型,而不是该VBScript代码使用的通用COM对象.)

我试过这个:

using EnvDTE;
...
DTE dte = new DTE();
Run Code Online (Sandbox Code Playgroud)

但我得到"检索CLSID {3C9CFE1E-389F-4118-9FAD-365385190329}组件的COM类工厂失败".

c# com createobject visual-studio

4
推荐指数
1
解决办法
4560
查看次数

asp经典中的server.createObject和createobject之间的区别

根据

http://msdn.microsoft.com/en-us/library/ms524620.aspx

你应该使用server.createObject

如果您已熟悉VBScript或JScript,请注意您不使用脚本语言的函数来创建新的对象实例(VBScript中的CreateObject或JScript中的New).您必须使用ASP Server.CreateObject方法; 否则,ASP无法跟踪您在脚本中使用该对象的情况.

但是其他一些人认为server.createObject意味着可以避免大部分时间的开销

http://classicasp.aspfaq.com/components/should-i-use-createobject-or-server-createobject.html

CreateObject比Server.CreateObject具有更少的开销,因为后者使用MTS - 导致显着的开销.

当组件遇到错误时,您也会遇到性能命中,因为使用Server.CreateObject时,这些错误会写入事件日志(无可否认,这在调试过程中非常有用).

要么

http://www.4guysfromrolla.com/webtech/043099-1.shtml

如果您正在编写处理事务的组件,这可能会变得很重要,因为它将是一个通过MTS传递它的良好安全网,因为您将使用MTS命令.但是,如果您不使用MTS,则可以通过将其传递给Server.CreateObject来创建处理器和内存.这使得使用CreateObject更好,因为它直接通过.

所以,如果我不使用mts并且不需要访问内置的asp的对象(比如set d = createObject("scripting.dictionary")),那么忘记server.createObject并使用createobject就可以了吗?

非常感谢...

com instantiation createobject asp-classic

4
推荐指数
1
解决办法
9665
查看次数

从IIS 7上的经典ASP创建COM +组件时"Server.CreateObject失败"

我在Windows Server 2008 R2 Standard中的IIS 7上运行了一个经典的ASP应用程序.

它在当天的某个时刻工作正常,但是在没有任何代码更改的情况下,它在实例化COM +组件时开始抛出以下错误:

MyObject = Server.CreateObject("MyCustomComponent.MyCustomObject")
Run Code Online (Sandbox Code Playgroud)

服务器对象错误'ASP 0177:80004005'

Server.CreateObject失败

/path/script.asp,第xx行

80004005

可能是什么问题呢?我做了一个互联网搜索,发现了几十个可能的答案,其中没有一个似乎与问题有任何关系.我知道我正在使用正确的对象名称 - 它刚刚工作了一段时间.什么也没有变!我花了差不多2个小时试图解决这个问题并且空洞.

iis-7 com+ createobject asp-classic

4
推荐指数
1
解决办法
2万
查看次数

调用COM类的非默认构造函数

我有一个DLL(用C#编写),包含一个带有2个构造函数的类; 一个默认(无参数)构造函数,另一个有3个参数.

在VBscript中,我想调用第二个构造函数,但CreateObject只接收一个classValue参数,没有可能的arguments参数.

我想底层实现CreateObject使用系统的CoCreateObject函数,根据这个答案不支持参数,但另一方面有QTP/UFT DotNetFactory能够做到这一点,所以必须有一种方法在纯VBscript中做到这一点.

(init如果可能的话,我想避免使用明显的方法解决方案).

有关如何调用非默认构造函数的任何想法?

c# com vbscript constructor createobject

4
推荐指数
1
解决办法
812
查看次数

经典ASP:不支持Server.CreateObject

当我从我的经典ASP页面调用Server.CreateObject()时,我得到了

Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method
Run Code Online (Sandbox Code Playgroud)

我尝试了以下(单独):

Server.CreateObject("Microsoft.XMLHTTP")
Server.CreateObject("MSXML2.XMLHTTP")
Server.CreateObject("MSXML.DOMDocument")
Run Code Online (Sandbox Code Playgroud)

我知道ActiveX对象已安装,因为以下javascript调用有效

var test = new ActiveXObject("Microsoft.XMLHTTP");
var test = new ActiveXObject("MSXML2.XMLHTTP");
var test = new ActiveXObject("MSXML.DOMDocument");
Run Code Online (Sandbox Code Playgroud)

我从我的localhost IIS服务器调用它.有任何想法如何解决这个问题?

createobject

3
推荐指数
1
解决办法
7415
查看次数

在VBScript中反转CreateObject

我有一个旧的vbscript运行命令,foo = CreateObject(xy).我想在另一台计算机上运行此脚本(它现在不运行btw)但我不知道我应该注册哪个DLL,或者我应该做什么,来运行CreateObject命令.

我怎样才能弄清楚我需要将哪些dll复制到新计算机中,我是否需要注册它们,还应该做些什么?

或者他们可能是OCX还是其他什么?

干杯.

vbscript createobject

3
推荐指数
1
解决办法
763
查看次数

ColdFusion CFC实现C#Partial Class?

ColdFusion是否提供将CFC拆分为多个文件的机制?我不是在谈论扩展,我在谈论将SAME CFC拆分成多个文件; 与C#允许"部分"类相同的方式.这是因为我使用T4生成一堆CFC,我希望能够通过在另一个文件中将功能标记到生成的CFC上.我想以不违反开放原则的方式这样做.

asp.net coldfusion cfc partial-classes createobject

3
推荐指数
1
解决办法
339
查看次数

如何使用 VBA 在浏览器中打开 URL?

尝试使用引用打开 PDF(-网站),该引用只能通过在父页面上单击链接打开。

通过使用

 CreateObject(WinHttp.WinHttpRequest.5.1) 
.setRequestHeader "referer", "https://...“ 
Run Code Online (Sandbox Code Playgroud)

访问有效,但我需要在浏览器中打开页面才能查看 pdf。

发现这个:

https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752094(v=vs.85)

语法:object.Navigate2(URL, Flags, TargetFrameName, PostData, Headers)

( PostData [in, optional] Headers [in, optional] )

并尝试

 Dim IE As InternetExplorer  
 Set IE = New InternetExplorer 
    
   With IE
    .Navigate2
    https://main...,
    "https://referer..."
Run Code Online (Sandbox Code Playgroud)

没有结果!有没有人有办法解决吗?(请只使用 VBA!谢谢)

excel vba createobject referer web-scraping

3
推荐指数
1
解决办法
135
查看次数

无法在经典ASP/VBScript页面中实现.Net COM对象(错误ASP 0177)

我使用.Net 3.5在C#中编写了一个支持COM interop的类库.该对象旨在为经典ASP页面提供一些实用程序功能.我编写了一个test.asp页面,该页面实例化了所需的对象并调用了它的方法.在我的机器上正常工作.

在另一台计算机(Windows Server 2003 - 标准版)上,虽然正确地向regasm注册了程序集,但它不起作用.我已经检查了注册表并且看起来没问题.

我得到的错误是"ASP 0177"(错误代码),"8000ffff; Server.CreateObject-Fehler"(错误描述),它转换为Server.CreateObject-Error.

顺便说一句.程序集已签名,并且没有任何其他自定义构建程序集作为依赖项(只是系统内容).

有人经历过类似的事吗?

.net com-interop createobject asp-classic

2
推荐指数
1
解决办法
5021
查看次数