1

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

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

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 工作。因此,如果直接从 UI 调用它,我可以付款并获得成功的回复。当我从 API 执行此操作时,它不起作用。

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

有没有人遇到过这样的事情?

任何帮助将不胜感激。

4

1 回答 1

1

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

归功于这篇文章:Mono Apache2 HttpWebRequest 因“请求超时”而崩溃

于 2013-08-29T00:29:03.370 回答