我正在使用Visual Studio 2010和C#編寫一個Web服務,需要通過滾動我自己的SoapExtension來解決的特殊處理。這個SoapExtension當然實現了ProcessMessage方法。My SoapExtension正在接收AfterSerialize消息兩次!
這很好,但由於某些原因,這個ProcessMessage被稱爲SoapServerMessage的每個階段的兩次(兩次,兩次),這是我的問題。任何幫助找出這是爲什麼,以及如何讓它只能被稱爲一次(一次),將不勝感激。
順便說一句:我發現在網上有其他人已經有類似的問題,如guy at mofeel.com,這表明他找到了解決方案here at experts-exchange.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);
}
...當我做一個調用我的Web方法,我得到一個日誌看起來像這樣:
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文件中應用了該屬性。 – 2010-07-07 21:13:50