C# ASP.NET MVC を使用して、Magento サイトで Web サービスを呼び出す場合:
Magento サイトが間違った HTTP ヘッダーを送信することがあります。具体的には、本文が実際よりも大きいことを示す body-size ヘッダーです。たとえば、body-size=1000 と表示されていても、本体は 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 サイトを変更したり、これを引き起こしている問題 (サードパーティの Web サーバー) を修正したりすることはできません。
自分の C# コードの動作を変更するためにできることはありますか? 体の終わりに達したときに何とか強制的に停止させ、この場合が発生した場合はこの例外を無視できるようにしたいと思います