Использование C# ASP.NET MVC при вызове веб-сервиса на сайте Magento:
Иногда сайт Magento отправляет неправильные заголовки HTTP, в частности, заголовок размера тела, говорящий о том, что тело больше, чем оно есть на самом деле. Например, может быть указано, что body-size=1000, но тело состоит только из 999 байт. Несмотря на неверный заголовок, тело правильное, поэтому я все же хотел бы иметь возможность его обработать.
Теперь, когда я пытаюсь прочитать этот ответ на С#
var invoiceInfo = _magentoService.salesOrderInvoiceInfo(sessionId, invoiceId);
Выдает исключение:
Connection closed by remote host
Что имеет смысл, потому что он пытается прочитать 1000-й байт, но его там нет. И, что еще хуже, код, который читает тело, скрыт глубоко внутри .NET framework, поэтому я не могу его изменить:
[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 или исправить любую проблему, вызывающую это (это сторонний веб-сервер).
Могу ли я что-нибудь сделать, чтобы изменить поведение моего собственного кода C#? Я хотел бы иметь возможность каким-то образом заставить его остановиться, когда он достигнет конца тела, и игнорировать это исключение, если возникнет этот случай.