| Код | using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Data.SqlClient; using System.Web.Services.Description; using System.Xml; [WebService(Name = "MyWebService", Description = "This web service is used to experi,ment with some of the Web service concepts.", Namespace = "http://www.mycompany.com")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class MyWebService : System.Web.Services.WebService { [CustomSoapExtension.TestSoapExtension()] [WebMethod()] public string HelloWorld() { return "Hello, World!"; } }
|
| Код | using System; using System.Collections.Generic; using System.Text; using System.Web.Services.Protocols; using System.IO;
namespace CustomSoapExtension { public class CustomSoapExtension : SoapExtension { System.IO.Stream OldStream; System.IO.Stream NewStream; public override object GetInitializer(Type serviceType) { return null; } public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) { return null; }
public override void Initialize(object initializer) { }
public override void ProcessMessage(SoapMessage message) { System.IO.Stream s = message.Stream; string mt = (message.GetType() == typeof(SoapServerMessage)) ? "Server Message" : "Client Message"; switch (message.Stage) { case SoapMessageStage.BeforeSerialize: s.Seek(0, SeekOrigin.Begin); WriteToLog("Before Serialize: (" + mt + ")", s); s.Seek(0, System.IO.SeekOrigin.Begin); break; case SoapMessageStage.AfterDeserialize: break; case SoapMessageStage.BeforeDeserialize: s.Seek(0, SeekOrigin.Begin); WriteToLog("Before Deserialize: (" + mt + ")", s); s.Seek(0, SeekOrigin.Begin); break; case SoapMessageStage.AfterSerialize: break; } } private void WriteToLog(string t, Stream s) { StreamReader sr = new StreamReader(s); Settings1 s1 = new Settings1(); StreamWriter sw = new StreamWriter(s1.LoggingFile, true); sw.Write("**** " + t + "\r\n" + sr.ReadToEnd() + "\r\n\r\n"); sw.Close(); } public override System.IO.Stream ChainStream(System.IO.Stream stream) { this.NewStream = stream; this.OldStream = new System.IO.MemoryStream(); return this.OldStream; } } }
|
| Код | using System; using System.Collections.Generic; using System.Text; using System.Web.Services.Protocols;
namespace CustomSoapExtension { [AttributeUsage(AttributeTargets.Method)] public class TestSoapExtensionAttribute : SoapExtensionAttribute {
public override Type ExtensionType { get { return typeof(CustomSoapExtension); } }
public override int Priority { get {return 1;} set{} } } }
|
Так вот, при вызове метода веб-сервиса HelloWorld WebServiceExtension судя по всему не вызывается. Ничего не пишется в файл. Дебагер не останавлияется на брэйкпойнтах в процедуре "Process". Почему?
|