我已经使用 Visual Studio 使用了一个 Web 服务,并使用托管代码在 AX 2012 中调用它。现在,如果我在一个简单的工作中运行代码:
static void CurrencyService(Args _args)
{
CurrencyConvert.Currency_Convert.CurrencyServiceClient convertcurrency;
CurrencyConvert.Currency_Convert.Currency currency;
System.ServiceModel.Description.ServiceEndpoint endPoint;
System.Type type;
System.Exception ex;
str s1;
try
{
type = CLRInterop::getType('CurrencyConvert.Currency_Convert.CurrencyServiceClient');
convertcurrency = AifUtil::createServiceClient(type);
endPoint = convertcurrency.get_Endpoint();
// endPoint.set_Address(new System.ServiceModel.EndpointAddress("http://localhost/HelloWorld"));
currency = convertcurrency.GetConversionRate(CurrencyConvert.Currency_Convert.CurrencyCode::AUD,CurrencyConvert.Currency_Convert.CurrencyCode::INR );
info(strFmt('%1', CLRInterop::getAnyTypeForObject(currency.get_Rate())));
}
catch(Exception::CLRError)
{
ex = CLRInterop::getLastException();
info(CLRInterop::getAnyTypeForObject(ex.ToString()));
}
}
上述工作工作正常,并在信息日志中产生结果。
现在,如果在批处理作业(扩展 Runbasebatch 类)的类下编写相同的代码,就像我们通常为任何批处理作业所做的那样,它会抛出错误:
Microsoft.Dynamics.Ax.Xpp.ErrorException:引发了“Microsoft.Dynamics.Ax.Xpp.ErrorException”类型的异常。
在 BatchRun.runJobStatic.xpp:line 38 中的 Dynamics.Ax.Application.BatchRun.runJobStatic(Int64 batchId)
在 BatchRun::runJobStatic(Object[])
在 Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(类型类型,字符串 MethodName,Object[] 参数)
在 BatchIL.taskThreadEntry(对象 threadArg)
除了使用的 Web 服务之外的其他批处理作业正常工作。我已经尝试过很多事情,例如:类的 RunOn 属性设置为“服务器”等。我们使用的每个 Web 服务都是这种情况。有人对此有适当的解决方案吗?