我有一个ColdFusion 9实例和一个.NET DLL。 .NET DLL是非常简单的字符串解析,使我的一些任务在CF中更容易。每个客户端都有一个DLL,它希望使用字符串执行某些特定于客户端的任务,但是从原始源中提取这些项目的核心不会从客户端更改为客户端。
在这种情况下,我有一个看起来像的对象:
public class clsNotification : BaseClass
{
public string GetSimpleString()
{
return "I was here";
}
public string GetNotificationsXml(int ProjectID)
{
return MybaseClass.getXML(ProjectID);
}
}
通知类是主DLL,BaseClass位于单独的DLL中。
更新 我把所有东西放在一个DLL中用于测试目的,它仍然给我同样的错误。我收到的错误是:
coldfusion.xml.rpc.CFCInvocationException: [java.lang.NoClassDefFoundError :
System/Xml/XmlQualifiedName][java.lang.ClassNotFoundException :
System.Xml.XmlQualifiedName]
不幸的是,我无法访问logs文件夹。我猜他们认为存在安全隐患等问题。我已将System.Xml.dll放入该文件夹中,但它似乎仍然没有被.NET Integration Service选中。
有什么新想法吗?为什么找不到XmlQualifiedName?
更新2: ColdFusion代码非常简单。它是一个cfcomponent,具有如下所述的函数:
<cffunction name="GetNotificationsXml" access="remote" returntype="string" output="false">
<cfargument name="ProjectID" type="numeric" required="yes">
<cfobject name="myObj" type=".NET"
assembly="#ExpandPath("./")#Published .NET DLLs/Notifications.dll"
class="#Namespace#.clsNotifications">
<cfset str=myObj.GetNotificationsXml(ProjectID) />
<cfreturn str>
</cffunction>
答案 0 :(得分:0)
我一直遇到这个问题,一个类会实例化,但异常会导致此错误。我通过修补得出的结论是,即使汇编列表包含正确的dll,它仍然会失败,因为我认为JNB代理不会在代理生成中包含该类。
我所做的是直接实例化这个类:
<cfset nullObj=CreateObject(".net","System.Net.WebExceptionStatus"
,"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll")>
因此,当/如果发生异常时,会为该类生成一个代理,并且不会发生错误。