⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bk12.cs

📁 编写web服务,并在客户端进行调用,包括控制台应用程序,web应用程序
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Web.Services;
using System.Web.Services.Protocols;


/// <summary>
/// bk12 的摘要说明
/// </summary>
public class TraceExtension : SoapExtension
{
    Stream oldStream;
    Stream newStream;
    string filename;

    public override Stream ChainStream(Stream stream)
    {
        oldStream = stream;
        newStream = new MemoryStream();
        return newStream;
    }
    public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)
    {
        return attribute;
    }
    public override object GetInitializer(Type serviceType)
    {
        return serviceType.GetType().ToString() + ".log";
    }
    public override void Initialize(object initializer)
    {
        Stream fs = new FileStream("D:\\baikun\\temp\\b.txt", FileMode.Create);
        StreamWriter writer = new StreamWriter(fs);
        writer.WriteLine("ok");
        filename = (string)initializer;
        writer.WriteLine("filename===" + filename);
        writer.Close();
    }
    public override void ProcessMessage(SoapMessage message)
    {
        switch (message.Stage)
        {
            case SoapMessageStage.BeforeSerialize:
                break;
            case SoapMessageStage.AfterSerialize:
                WriteOutput(message);
                break;
            case SoapMessageStage.BeforeDeserialize:
                WriteInput(message);
                break;
            case SoapMessageStage.AfterDeserialize:
                break;
            default:
                throw new Exception("Error.");
        }

    }
    public void WriteOutput(SoapMessage message)
    {
        newStream.Position = 0;
        FileStream fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
        StreamWriter w = new StreamWriter(fs);
        string soapString = (message is SoapServerMessage) ? "SoapReponse" : "SoapResquest";
        w.WriteLine("---out---" + soapString + "at" + DateTime.Now);
        w.WriteLine("message===" + message.MethodInfo.Name);
        w.Flush();
        Copy(newStream, fs);
        w.Close();
        newStream.Position = 0;
        Copy(newStream, oldStream);
    }
    public void WriteInput(SoapMessage message)
    {
        Copy(oldStream, newStream);
        FileStream fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
        StreamWriter w = new StreamWriter(fs);
        string soapString = (message is SoapServerMessage) ? "SoapResquest" : "SoapReponse";
        w.WriteLine("---in---" + soapString + "at" + DateTime.Now);
        w.WriteLine("message===" + message.MethodInfo.Name);
        w.Flush();
        newStream.Position = 0;
        Copy(newStream, fs);
        w.Close();
        newStream.Position = 0;
    }
    void Copy(Stream from, Stream to)
    {
        TextReader reader = new StreamReader(from);
        TextWriter writer = new StreamWriter(to);
        writer.WriteLine(reader.ReadToEnd());
        writer.Flush();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -