我正在编写一个 .Net C# Web 服务,用于在我们的一个供应商处使用 WS-Security 调用远程 Axis2 Web 服务
它必须作为 COM 可见的 DLL 文件托管,因为我实际上使用 Coldfusion 9 作为主应用程序服务器,并且我已经放弃到 .Net,因为我真的不想使用 Java,因为 Coldfusion 9 仅支持 Axis 1.1并且我在那里运行了许多其他 Web 服务,我不希望类加载问题影响这些服务
我的 .Net 能力充其量是有限的,因为我真的是一个 Java 猴子,但是当 Coldfusion 不喜欢与远程 Web 服务交谈时,我过去曾使用它来创建 Web 服务。
我遇到的问题似乎与对服务的调用有关,它引发了以下错误
System.ServiceModel.FaultException:业务对象:Q1SearchOrderReferenceType@67af67af(参考=Q1TextType@67c067c0,AllocatedBy=Q1TextType@67dd67dd)
服务器堆栈跟踪:
在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)
在 [0] 处重新抛出异常:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) 在 TCAB2BWebService.ForwardOrder(ForwardOrderRequest request) 在 uk.co .etsos.coal.CoalGateway.RequestCoal(CoalOrderDetails orderDetails)
我正在打的电话是
this.client.Open();
Q1SearchOrderType searchRequest = setCoalOrderDetails(orderDetails);
Q1SearchProductReferenceType1 productReference;
XMLHelper<Q1SearchOrderType> requestXMLHelper = new XMLHelper<Q1SearchOrderType>(baseDirectory);
requestXMLHelper.Save(searchRequest, orderDetails.MessageId, orderDetails.SecurityId, "Request");
Q1SearchOrderReferenceType1 response = this.client.ForwardOrder(searchRequest, out productReference);
CoalUtil.writeToLogFile(ObjectInspector.Dump(response).ToString(), this.logFile);
CoalUtil.writeToLogFile(ObjectInspector.Dump(productReference).ToString(), this.logFile);
它永远不会到达 writeToLogFile - 因此在 ForwardOrder 上引发错误,该错误是由 WSDL 中的 svcutil 生成的
public Q1SearchOrderReferenceType1 ForwardOrder(Q1SearchOrderType SearchOrder, out Q1SearchProductReferenceType1 SearchProductReference)
{
ForwardOrderRequest inValue = new ForwardOrderRequest();
inValue.SearchOrder = SearchOrder;
ForwardOrderResponse retVal = ((TCAB2BWebService)(this)).ForwardOrder(inValue);
SearchProductReference = retVal.SearchProductReference;
return retVal.SearchOrderReference;
}
我完全不知道我到底做错了什么,任何想法都将不胜感激