Я использую Visual Studio 2010 и C# для написания веб-службы, для которой требуется специальная обработка, которую я решаю, загружая собственный SoapExtension. Это SoapExtension, конечно, реализует метод ProcessMessage.My SoapExtension получает сообщение AfterSerialize дважды!
Это все нормально, но почему-то это ProcessMessage вызывается дважды (два, два раза) для каждой из этапов SoapServerMessage, и это моя проблема. Любая помощь в выяснении, почему это так и как я могу сделать это, называется только один раз (один, 1 раз), будет высоко оценена.
BTW: Я нашел другие в Интернете, которые сталкиваются с подобной проблемой, например, guy at mofeel.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:
Примечание как каждый этап сообщения вызывается дважды?!?!?
Спасибо, миллион. Вы правы, я использовал его в файле web.config, а также применил атрибут. –