超时异常:从REST API中调用Soap API

时间:2013-08-28 02:36:02

标签: c# rest soap mono servicestack

我有一个非常奇怪的问题。我有一个使用ServiceStack的REST API,它可以执行一些保存支付数据等操作。在该API中,我开始构建支付对象,以便我可以向支付网关发起支付。此支付网关是使用SoapHttpClientProtocol的Soap API。

我遇到的问题是Soap API Times了。我有一个堆栈跟踪,让我相信它正在某个框架内发生。

System.Net.WebException: Error: ConnectFailure (Connection timed out) ---> System.Net.Sockets.SocketException: Connection timed out
  at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] in <filename unknown>:0 
  at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0 
  at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (System.String method_name, System.Object[] parameters) [0x00000] in <filename unknown>:0 

上面是我得到的例外,所以我相信它发生在Invoke方法中。这是代理文件中的代码。

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("paymenturl", RequestNamespace="gatewayurl", ResponseNamespace="gatewayurl", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, Use=System.Web.Services.Description.SoapBindingUse.Literal)]
public string SubmitPayment(string trnXML) {
    object[] results = this.Invoke("SubmitPayment", new object[] {
                    trnXML});
    return ((string)(results[0]));
}

有谁知道为什么会这样?

现在,SOAP Payment API可以通过UI运行。因此,如果直接从用户界面调用它,我可以进行付款并获得成功的回复。当我从API执行它时它不起作用。

这可能是一个架构问题,它不允许来自另一个API的API调用吗?

之前有没有人遇到这样的事情?

任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

发现问题。这是因为我的bin文件夹中有一个mono.security.dll。显然不需要这样就把它删除了。一旦我做到了,它就有用了。

归功于这篇文章:Mono Apache2 HttpWebRequest crashes with "The request timed out"