使用 C# ASP.NET MVC,在 Magento 站点上调用 web 服务时:
有时 Magento 站点会发送错误的 HTTP 标头,特别是 body-size 标头表示正文比实际大。例如它可能会说 body-size=1000,但 body 只包含 999 个字节。尽管标题不正确,但正文是正确的,所以我仍然希望能够处理它。
现在,当我尝试在 C# 中读取该响应时
var invoiceInfo = _magentoService.salesOrderInvoiceInfo(sessionId, invoiceId);
它抛出一个异常:
Connection closed by remote host
这是有道理的,因为它试图读取第 1000 个字节但它不存在。更糟糕的是,读取正文的代码深埋在 .NET 框架中,所以我无法更改它:
[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:Mage_Api_Model_Server_V2_HandlerAction", RequestNamespace="urn:Magento", ResponseNamespace="urn:Magento")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
public salesOrderInvoiceEntity salesOrderInvoiceInfo(string sessionId, string invoiceIncrementId) {
object[] results = this.Invoke("salesOrderInvoiceInfo", new object[] {
sessionId,
invoiceIncrementId}); // exception thrown here
return ((salesOrderInvoiceEntity)(results[0]));
}
我无法更改 Magento 站点,或修复导致此问题的任何问题(它是第 3 方网络服务器)。
我能做些什么来改变我自己的 C# 代码的行为吗?我希望能够以某种方式强制它在到达身体末端时停止,如果出现这种情况,请忽略此异常