SoapExtensionとは? わかりやすく解説

SoapExtension クラス

ASP.NET作成されXML Web サービスSOAP 拡張機能のための基本クラス

名前空間: System.Web.Services.Protocols
アセンブリ: System.Web.Services (system.web.services.dll 内)
構文構文

Public MustInherit Class
 SoapExtension
Dim instance As SoapExtension
public abstract class SoapExtension
public ref class SoapExtension abstract
public abstract class SoapExtension
解説解説
使用例使用例

XML Web サービス メソッド適用するSOAP 要求および SOAP 応答指定ファイル出力する TraceExtension SOAP 拡張機能次に示します次の SOAP 拡張機能XML Web サービス一緒に実行するようインストールされている場合ASPNET ユーザー アカウントは、ログ ファイル書き込まれディレクトリに対して書き込みアクセス許可持っている必要があります

Imports System
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.IO

' Define a SOAP Extension that traces the SOAP request and SOAP response
' for the XML Web service method the SOAP extension is applied to.
Public Class TraceExtension
    Inherits SoapExtension

    Private oldStream As Stream
    Private newStream As Stream
    Private m_filename As String

    ' Save the Stream representing the SOAP request or SOAP response
 into
    ' a local memory buffer.
    Public Overrides Function
 ChainStream(ByVal stream As Stream) As
 Stream
        oldStream = stream
        newStream = New MemoryStream()
        Return newStream
    End Function

    ' When the SOAP extension is accessed for the first time, the XML
 Web
    ' service method it is applied to is accessed to store the file
    ' name passed in, using the corresponding SoapExtensionAttribute.
    
    Public Overloads Overrides
 Function GetInitializer(ByVal methodInfo
 As _
        LogicalMethodInfo, _
    ByVal attribute As SoapExtensionAttribute)
 As Object
        Return CType(attribute, TraceExtensionAttribute).Filename
    End Function

    ' The SOAP extension was configured to run using a configuration
 file
    ' instead of an attribute applied to a specific XML Web service
    ' method.  Return a file name based on the class implementing the
 Web
    ' Service's type.
    Public Overloads Overrides
 Function GetInitializer(ByVal WebServiceType
 As _
      Type) As Object
        ' Return a file name to log the trace information to, based
 on the
        ' type.
        Return "C:\" + WebServiceType.FullName
 + ".log"
    End Function

    ' Receive the file name stored by GetInitializer and store it in
 a
    ' member variable for this specific instance.
    Public Overrides Sub
 Initialize(ByVal initializer As Object)
        m_filename = CStr(initializer)
    End Sub

    ' If the SoapMessageStage is such that the SoapRequest or SoapResponse
    ' is still in the SOAP format to be sent or received over the network
,
    ' save it out to file.
    Public Overrides Sub
 ProcessMessage(ByVal message As SoapMessage)
        Select Case message.Stage
            Case SoapMessageStage.BeforeSerialize
            Case SoapMessageStage.AfterSerialize
                WriteOutput(message)
            Case SoapMessageStage.BeforeDeserialize
                WriteInput(message)
            Case SoapMessageStage.AfterDeserialize
            Case Else
                Throw New Exception("invalid
 stage")
        End Select
    End Sub

    ' Write the SOAP message out to a file.
    Public Sub WriteOutput(ByVal
 message As SoapMessage)
        newStream.Position = 0
        Dim fs As New FileStream(m_filename,
 FileMode.Append, _
                                 FileAccess.Write)
        Dim w As New StreamWriter(fs)
        w.WriteLine("-----Response at " + DateTime.Now.ToString())
        w.Flush()
        Copy(newStream, fs)
        w.Close()
        newStream.Position = 0
        Copy(newStream, oldStream)
    End Sub

    ' Write the SOAP message out to a file.
    Public Sub WriteInput(ByVal
 message As SoapMessage)
        Copy(oldStream, newStream)
        Dim fs As New FileStream(m_filename,
 FileMode.Append, _
                                 FileAccess.Write)
        Dim w As New StreamWriter(fs)

        w.WriteLine("----- Request at " + DateTime.Now.ToString())
        w.Flush()
        newStream.Position = 0
        Copy(newStream, fs)
        w.Close()
        newStream.Position = 0
    End Sub

    Sub Copy(ByVal fromStream As
 Stream, ByVal toStream As Stream)
        Dim reader As New
 StreamReader(fromStream)
        Dim writer As New
 StreamWriter(toStream)
        writer.WriteLine(reader.ReadToEnd())
        writer.Flush()
    End Sub
End Class

' Create a SoapExtensionAttribute for our SOAP Extension that can be
' applied to an XML Web service method.
<AttributeUsage(AttributeTargets.Method)> _
Public Class TraceExtensionAttribute
    Inherits SoapExtensionAttribute

    Private m_filename As String
 = "c:\log.txt"
    Private m_priority As Integer

    Public Overrides ReadOnly
 Property ExtensionType() As Type
        Get
            Return GetType(TraceExtension)
        End Get
    End Property

    Public Overrides Property
 Priority() As Integer
        Get
            Return m_priority
        End Get
        Set(ByVal Value As
 Integer)
            m_priority = value
        End Set
    End Property

    Public Property Filename() As
 String
        Get
            Return m_filename
        End Get
        Set(ByVal Value As
 String)
            m_filename = value
        End Set
    End Property
End Class
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;
using System.Net;

    // Define a SOAP Extension that traces the SOAP request and SOAP
    // response for the XML Web service method the SOAP extension is
    // applied to.

    public class TraceExtension : SoapExtension
 
    {
        Stream oldStream;
        Stream newStream;
        string filename;

        // Save the Stream representing the SOAP request or SOAP response
 into
        // a local memory buffer.
        public override Stream ChainStream( Stream stream )
        {
            oldStream = stream;
            newStream = new MemoryStream();
            return newStream;
        }

        // When the SOAP extension is accessed for the first time, the
 XML Web
        // service method it is applied to is accessed to store the
 file
        // name passed in, using the corresponding SoapExtensionAttribute.
    
        public override object GetInitializer(LogicalMethodInfo
 methodInfo, SoapExtensionAttribute attribute) 
        {
            return ((TraceExtensionAttribute) attribute).Filename;
        }

        // The SOAP extension was configured to run using a configuration
 file
        // instead of an attribute applied to a specific XML Web service
        // method.
        public override object GetInitializer(Type WebServiceType)
 
        {
            // Return a file name to log the trace information to, based
 on the
            // type.
            return "C:\\" + WebServiceType.FullName
 + ".log";    
        }

        // Receive the file name stored by GetInitializer and store
 it in a
        // member variable for this specific instance.
        public override void Initialize(object
 initializer) 
        {
            filename = (string) initializer;
        }

        //  If the SoapMessageStage is such that the SoapRequest or
        //  SoapResponse is still in the SOAP format to be sent or received
,
        //  save it out to a file.
        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("invalid stage");
            }
        }

        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)
 ? "SoapResponse" : "SoapRequest";
            w.WriteLine("-----" + soapString + " at " + DateTime.Now);
            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)
 ?
                "SoapRequest" : "SoapResponse";
            w.WriteLine("-----" + soapString + 
                " at " + DateTime.Now);
            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();
        }
    }

    // Create a SoapExtensionAttribute for the SOAP Extension that can
 be
    // applied to an XML Web service method.
    [AttributeUsage(AttributeTargets.Method)]
    public class TraceExtensionAttribute :
 SoapExtensionAttribute 
    {

        private string filename = "c:\\log.txt";
        private int priority;

        public override Type ExtensionType 
        {
            get { return typeof(TraceExtension);
 }
        }

        public override int Priority 
        {
            get { return priority; }
            set { priority = value; }
        }

        public string Filename 
        {
            get 
            {
                return filename;
            }
            set 
            {
                filename = value;
            }
        }
    }
#using <System.dll>
#using <System.Web.Services.dll>

using namespace System;
using namespace System::Web::Services;
using namespace System::Web::Services::Protocols;
using namespace System::IO;
using namespace System::Net;

ref class TraceExtension;

// Create a SoapExtensionAttribute for the SOAP Extension that can be
// applied to an XML Web service method.
[AttributeUsage(AttributeTargets::Method)]
public ref class TraceExtensionAttribute: public
 SoapExtensionAttribute
{
private:
   String^ filename;
   int priority;

public:
   TraceExtensionAttribute()
      : filename( "c:\\log.txt" )
   {}

   property Type^ ExtensionType 
   {
      virtual Type^ get() override
      {
         return TraceExtension::typeid;
      }
   }

   property int Priority 
   {
      virtual int get() override
      {
         return priority;
      }
      virtual void set( int
 value ) override
      {
         priority = value;
      }
   }

   property String^ Filename 
   {
      String^ get()
      {
         return filename;
      }
      void set( String^ value )
      {
         filename = value;
      }
   }
};

// Define a SOAP Extension that traces the SOAP request and SOAP
// response for the XML Web service method the SOAP extension is
// applied to.
public ref class TraceExtension: public
 SoapExtension
{
private:
   Stream^ oldStream;
   Stream^ newStream;
   String^ filename;

public:
   // Save the Stream representing the SOAP request or SOAP response
 into
   // a local memory buffer.
   virtual Stream^ ChainStream( Stream^ stream ) override
   {
      oldStream = stream;
      newStream = gcnew MemoryStream;
      return newStream;
   }

   // When the SOAP extension is accessed for the first time, the XML
 Web
   // service method it is applied to is accessed to store the file
   // name passed in, using the corresponding SoapExtensionAttribute.
 
   virtual Object^ GetInitializer( LogicalMethodInfo^ /*methodInfo*/, SoapExtensionAttribute^
 attribute ) override
   {
      return (dynamic_cast<TraceExtensionAttribute^>(attribute))->Filename;
   }

   // The SOAP extension was configured to run using a configuration
 file
   // instead of an attribute applied to a specific XML Web service
   // method.
   virtual Object^ GetInitializer( Type^ WebServiceType ) override
   {
      // Return a file name to log the trace information to, based on
 the
      // type.
      return String::Format( "C:\\{0}.log", WebServiceType->FullName
 );
   }

   // Receive the file name stored by GetInitializer and store it in
 a
   // member variable for this specific instance.
   virtual void Initialize( Object^ initializer ) override
   {
      filename = dynamic_cast<String^>(initializer);
   }

   //  If the SoapMessageStage is such that the SoapRequest or
   //  SoapResponse is still in the SOAP format to be sent or received
,
   //  save it out to a file.
   virtual void ProcessMessage( SoapMessage^ message ) override
   {
      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 gcnew Exception( "invalid stage" );
      }
   }

   void WriteOutput( SoapMessage^ message )
   {
      newStream->Position = 0;
      FileStream^ fs = gcnew FileStream( filename, FileMode::Append,
         FileAccess::Write );
      StreamWriter^ w = gcnew StreamWriter( fs );

      String^ soapString = ( (SoapServerMessage^)( message ) ) ?
         (String^)"SoapResponse" : "SoapRequest";
      w->WriteLine( "-----{0} at {1}", soapString, DateTime::Now );
      w->Flush();
      Copy( newStream, fs );
      w->Close();
      newStream->Position = 0;
      Copy( newStream, oldStream );
   }

   void WriteInput( SoapMessage^ message )
   {
      Copy( oldStream, newStream );
      FileStream^ fs = gcnew FileStream( filename,FileMode::Append,FileAccess::Write
 );
      StreamWriter^ w = gcnew StreamWriter( fs );
      String^ soapString = (dynamic_cast<SoapServerMessage^>(message)) ? (String^)"SoapRequest"
 : "SoapResponse";
      w->WriteLine( "-----{0} at {1}", soapString, DateTime::Now );
      w->Flush();
      newStream->Position = 0;
      Copy( newStream, fs );
      w->Close();
      newStream->Position = 0;
   }

   void Copy( Stream^ from, Stream^ to )
   {
      TextReader^ reader = gcnew StreamReader( from );
      TextWriter^ writer = gcnew StreamWriter( to );
      writer->WriteLine( reader->ReadToEnd() );
      writer->Flush();
   }
};
import System.*;
import System.Web.Services.*;
import System.Web.Services.Protocols.*;
import System.IO.*;
import System.Net.*;

// Define a SOAP Extension that traces the SOAP request and SOAP
// response for the XML Web service method the SOAP extension is
// applied to.
public class TraceExtension extends SoapExtension
{
    private Stream oldStream;
    private Stream newStream;
    private String filename;

    // Save the Stream representing the SOAP request or SOAP response
 into
    // a local memory buffer.
    public Stream ChainStream(Stream stream)
    {
        oldStream = stream;
        newStream = new MemoryStream();
        return newStream;
    } //ChainStream

    // When the SOAP extension is accessed for the first time, the XML
 Web
    // service method it is applied to is accessed to store the file
    // name passed in, using the corresponding SoapExtensionAttribute.
    
    public Object GetInitializer(LogicalMethodInfo methodInfo,
 
        SoapExtensionAttribute attribute)
    {
        return ((TraceExtensionAttribute)(attribute)).get_Filename();
    } //GetInitializer

    // The SOAP extension was configured to run using a configuration
 file
    // instead of an attribute applied to a specific XML Web service
    // method.
    public Object GetInitializer(Type WebServiceType)
    {
        // Return a file name to log the trace information to, based on
 the
        // type.
        return "C:\\" + WebServiceType.get_FullName()
 + ".log";
    } //GetInitializer

    // Receive the file name stored by GetInitializer and store it in
 a
    // member variable for this specific instance.
    public void Initialize(Object initializer)
    {
        filename = (String)(initializer);
    } //Initialize

    //  If the SoapMessageStage is such that the SoapRequest or
    //  SoapResponse is still in the SOAP format to be sent or received
,
    //  save it out to a file.
    public void ProcessMessage(SoapMessage
 message) throws Exception
    {
        switch (message.get_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("invalid stage");
        }
    } //ProcessMessage

    public void WriteOutput(SoapMessage message)
    {
        newStream.set_Position(0);

        FileStream fs = 
            new FileStream(filename, FileMode.Append, FileAccess.Write);
        StreamWriter w = new StreamWriter(fs);
        String soapString = (message instanceof SoapServerMessage) ? 
                            "SoapResponse" : "SoapRequest";

        w.WriteLine(("-----" + soapString + " at " + DateTime.get_Now()));
        w.Flush();
        Copy(newStream, fs);
        w.Close();
        newStream.set_Position(0);
        Copy(newStream, oldStream);
    } //WriteOutput

    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 instanceof SoapServerMessage) ? 
                            "SoapRequest" : "SoapResponse";

        w.WriteLine(("-----" + soapString + " at " + DateTime.get_Now()));
        w.Flush();
        newStream.set_Position(0);
        Copy(newStream, fs);
        w.Close();
        newStream.set_Position(0);
    } //WriteInput

    void Copy(Stream from, Stream to)
    {
        TextReader reader = new StreamReader(from);
        TextWriter writer = new StreamWriter(to);

        writer.WriteLine(reader.ReadToEnd());
        writer.Flush();
    } //Copy
} //TraceExtension


// Create a SoapExtensionAttribute for the SOAP Extension that can be
// applied to an XML Web service method.

/** @attribute AttributeUsage(AttributeTargets.Method)
 */
public class TraceExtensionAttribute extends
 SoapExtensionAttribute
{
    private String filename = "c:\\log.txt";
    private int priority;

    public Type get_ExtensionType()
    {
        return TraceExtension.class.ToType();
    } //get_ExtensionType

    public int get_Priority()
    {
        return priority;
    } //get_Priority

    public void set_Priority(int
 value)
    {
        priority = value;
    } //set_Priority

    public String get_Filename()
    {
        return filename;
    } //get_Filename

    public void set_Filename(String value)
    {
        filename = value;
    } //set_Filename
} //TraceExtensionAttribute
継承階層継承階層
System.Object
  System.Web.Services.Protocols.SoapExtension
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
SoapExtension メンバ
System.Web.Services.Protocols 名前空間
SoapMessageStage
SoapExtensionAttribute
LogicalMethodInfo クラス

SoapExtension コンストラクタ


SoapExtension メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド参照)
  名前 説明
パブリック メソッド ChainStream 派生クラスオーバーライドされると、SOAP 要求または応答格納しているメモリ バッファSOAP 拡張機能からアクセスできます
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetInitializer オーバーロードされます派生クラスオーバーライドされると、SOAP 拡張機能XML Web サービス メソッド固有のデータ1 回動作初期化します。
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド Initialize 派生クラスオーバーライドされると、SOAP 拡張機能は GetInitializer メソッドキャッシュされているデータ使用して自らを初期化します。
パブリック メソッド ProcessMessage 派生クラスオーバーライドされると、SOAP 拡張機能は SoapMessage を受け取ってそれぞれの SoapMessageStage で処理できます
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SoapExtension クラス
System.Web.Services.Protocols 名前空間
SoapMessageStage
SoapExtensionAttribute
LogicalMethodInfo クラス

SoapExtension メンバ

ASP.NET作成されXML Web サービスSOAP 拡張機能のための基本クラス

SoapExtension データ型公開されるメンバを以下の表に示します


プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド SoapExtension  
パブリック メソッドパブリック メソッド
( プロテクト メソッド参照)
  名前 説明
パブリック メソッド ChainStream 派生クラスオーバーライドされると、SOAP 要求または応答格納しているメモリ バッファSOAP 拡張機能からアクセスできます
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetInitializer オーバーロードされます派生クラスオーバーライドされると、SOAP 拡張機能XML Web サービス メソッド固有のデータ1 回動作初期化します。
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド Initialize 派生クラスオーバーライドされると、SOAP 拡張機能は GetInitializer メソッドキャッシュされているデータ使用して自らを初期化します。
パブリック メソッド ProcessMessage 派生クラスオーバーライドされると、SOAP 拡張機能は SoapMessage を受け取ってそれぞれの SoapMessageStage で処理できます
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SoapExtension クラス
System.Web.Services.Protocols 名前空間
SoapMessageStage
SoapExtensionAttribute
LogicalMethodInfo クラス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「SoapExtension」の関連用語

SoapExtensionのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SoapExtensionのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS