【发布时间】:2015-09-17 18:44:24
【问题描述】:
我正在尝试从我的 ESB Mule 项目中调用 .Net 方法。 我在 VS 2013 中创建了以下类:
namespace NicePerform.ESBDataResolver
{
public class DataResolver
{
public Object InitInfrastructure(string sysAdminURL, string delimiter, int refreshIntervalInMin)
{
/// do something
}
}
}
In the Mule project I configured DotNet connector.
<dotnet:config name="DotNet_Connector" assemblyType="NicePerform.ESBDataResolver.DataResolver, NicePerform.ESBDataResolver" assemblyPath="D:\tfs\NGA\Splash\ESB\Debug\NicePerform.ESBDataResolver.dll" scope="Singleton" doc:name="DotNet Connector"/>
<dotnet:execute config-ref="DotNet_Connector" methodName="InitInfrastructure(System.String sysAdminURL, System.String delimiter, System.Int32 refreshIntervalInMin)" doc:name="DotNet Connector"/>
我正在填充有效负载:
{"sysAdminURL":"${sysAdmin}","delimiter":"${delimiter}","refreshIntervalInMin":"${userAdminRefreshInterval}"}
但在调用 .net 方法时我失败了,但出现以下异常:
System.Exception: Error looking for method named InitInfrastructure(System.String sysAdminURL, System.String delimiter, System.Int32 refreshIntervalInMin) : The method name InitInfrastructure(System.String sysAdminURL, System.String delimiter, System.Int32 refreshIntervalInMin) doesn't exist
Server stack trace:
at Org.Mule.Api.Component.ComponentLoader.MethodLookUp(Object component, String methodName, MuleMessage message)
at Org.Mule.Api.Component.ComponentLoader.ExecuteComponent(String assembly, String type, String methodName, MuleMessage message, Boolean isSingleton)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Org.Mule.Api.Component.ComponentLoader.ExecuteComponent(String assembly, String type, String methodName, MuleMessage message, Boolean isSingleton)
at Org.Mule.Api.Component.ComponentManager.Execute(String assembly, String typeName, String methodName, MuleMessage message, Boolean isSingleton)
at Org.Mule.Api.Routing.Router.Process(ProcessRequest request)
at Org.Mule.Api.Routing.__Router.Process0(IntPtr __envp, JniLocalHandle __obj, JniLocalHandle request)
我尝试将命名空间与方法名称一起设置,但没有成功。如果我正在更改调用方法签名以接收单个字符串参数 - 它可以工作。我做错了什么?
【问题讨论】:
标签: mule