Я использую Visual Studio 2010 и C # для написания веб-службы, которая требует особой обработки, которую я решаю путем развертывания собственного SoapExtension. Это SoapExtension, конечно, реализует метод ProcessMessage .
Это нормально, но по какой-то причине ProcessMessage вызывается дважды (два, 2 раза) для каждой из стадий SoapServerMessage, и это моя проблема. Буду очень признателен за любую помощь в выяснении, почему это так и как я могу сделать так, чтобы он вызывался только один раз (один, один раз).
Кстати: я нашел в Интернете других, у которых была похожая проблема, например, этот парень на mofeel.com , который указывает, что он нашел решение здесь, на бирже экспертов. com но я не буду выдавать свою кредитную карту за решение. Это принцип. Может кто-нибудь помочь мне, пожалуйста?
Мой ProcessMessage метод выглядит следующим образом:
public override void ProcessMessage(SoapMessage message)
{
if (message is SoapServerMessage)
{
LogFile.WriteLogString(0, "-------------------");
LogFile.WriteLogString(0, "message.Type:" + message.GetType().ToString());
LogFile.WriteLogString(0, "message.Stage:" + message.Stage);
LogFile.WriteLogString(0, "message.Stream.Length:" + message.Stream.Length);
LogFile.WriteLogString(0, "message.Stream.Position:" + message.Stream.Position);
LogFile.WriteLogString(0, "message.Exception:" + message.Exception);
ProcessServerMessage(message);
}
else ProcessClientMessage(message);
}
... и когда я делаю один вызов моего веб-метода, я получаю журнал, похожий на этот:
7.7.2010 17:40:25: -------- Log file opened --------
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:BeforeDeserialize
7.7.2010 17:40:27: [0] message.Stream.Length:0
7.7.2010 17:40:27: [0] message.Stream.Position:0
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:BeforeDeserialize
7.7.2010 17:40:27: [0] message.Stream.Length:0
7.7.2010 17:40:27: [0] message.Stream.Position:0
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:AfterDeserialize
7.7.2010 17:40:27: [0] message.Stream.Length:330
7.7.2010 17:40:27: [0] message.Stream.Position:330
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:AfterDeserialize
7.7.2010 17:40:27: [0] message.Stream.Length:330
7.7.2010 17:40:27: [0] message.Stream.Position:330
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:BeforeSerialize
7.7.2010 17:40:27: [0] message.Stream.Length:0
7.7.2010 17:40:27: [0] message.Stream.Position:0
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:BeforeSerialize
7.7.2010 17:40:27: [0] message.Stream.Length:0
7.7.2010 17:40:27: [0] message.Stream.Position:0
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:AfterSerialize
7.7.2010 17:40:27: [0] message.Stream.Length:480
7.7.2010 17:40:27: [0] message.Stream.Position:480
7.7.2010 17:40:27: [0] message.Exception:
7.7.2010 17:40:27: [0] -------------------
7.7.2010 17:40:27: [0] message.Type:System.Web.Services.Protocols.SoapServerMessage
7.7.2010 17:40:27: [0] message.Stage:AfterSerialize
7.7.2010 17:40:27: [0] message.Stream.Length:480
7.7.2010 17:40:27: [0] message.Stream.Position:480
7.7.2010 17:40:27: [0] message.Exception:
Обратите внимание, как каждый этап сообщения вызывается дважды?!?!?