次の方法で共有


LogicalMethodInfo クラス

XML Web サービス メソッドの属性とメタデータを表します。このクラスは継承できません。

この型のすべてのメンバの一覧については、LogicalMethodInfo メンバ を参照してください。

System.Object
   System.Web.Services.Protocols.LogicalMethodInfo

NotInheritable Public Class LogicalMethodInfo
[C#]
public sealed class LogicalMethodInfo
[C++]
public __gc __sealed class LogicalMethodInfo
[JScript]
public class LogicalMethodInfo

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

LogicalMethodInfo は主として SOAP 拡張機能で使用し、SOAP 拡張機能を実行するように設定した XML Web サービス メソッドの詳細を調査します。SOAP 拡張機能の設定により、 LogicalMethodInfo を取り込む SoapExtensionGetInitializer メソッド内の XML Web サービス メソッドの詳細を調べます。 LogicalMethodInfo は、 Parameters プロパティ、および GetCustomAttributes プロパティを使用して XML Web サービス メソッドに適用されたカスタム属性にアクセスすることにより XML Web サービス メソッドのパラメータなどの詳細を提供します。

SOAP 拡張機能の詳細については SoapExtension クラスのトピックまたは「 SOAP 拡張機能を使用した SOAP メッセージの変更 」を参照してください。

使用例

 
' Process the SOAP message received and write to log file.
Public Overrides Sub ProcessMessage(message As SoapMessage)
   Select Case message.Stage
      Case SoapMessageStage.BeforeSerialize
      Case SoapMessageStage.AfterSerialize
         WriteOutput(CType(message, SoapServerMessage))
      Case SoapMessageStage.BeforeDeserialize
         WriteInput(CType(message, SoapServerMessage))
      Case SoapMessageStage.AfterDeserialize
      Case Else
            Throw New Exception("invalid stage")
   End Select
End Sub 'ProcessMessage

' Write the contents of the incoming SOAP message to the log file.
Public Sub WriteInput(message As SoapServerMessage)
   ' Utility method to copy the contents of one stream to another.
   Copy(oldStream, newStream)
   Dim myFileStream As New FileStream(filename, FileMode.Append, FileAccess.Write)
   Dim myStreamWriter As New StreamWriter(myFileStream)
   myStreamWriter.WriteLine("================================== Request at " + _
                             DateTime.Now)
   myStreamWriter.WriteLine("The method that has been invoked is : ")
   myStreamWriter.WriteLine(ControlChars.Tab + message.MethodInfo.Name)
   myStreamWriter.WriteLine("The contents of the SOAP envelope are : ")
   myStreamWriter.Flush()
   newStream.Position = 0
   Copy(newStream, myFileStream)
   myFileStream.Close()
   newStream.Position = 0
End Sub 'WriteInput

' Write the contents of the outgoing SOAP message to the log file.
Public Sub WriteOutput(message As SoapServerMessage)
   newStream.Position = 0
   Dim myFileStream As New FileStream(filename, FileMode.Append, FileAccess.Write)
   Dim myStreamWriter As New StreamWriter(myFileStream)
   myStreamWriter.WriteLine("---------------------------------- Response at " + _
                             DateTime.Now)
   myStreamWriter.Flush()
   ' Utility method to copy the contents of one stream to another.
   Copy(newStream, myFileStream)
   myFileStream.Close()
   newStream.Position = 0
   Copy(newStream, oldStream)
End Sub 'WriteOutput

[C#] 
// Process the SOAP message received and write to log file.
public override void ProcessMessage(SoapMessage message) 
{
   switch (message.Stage) 
   {
      case SoapMessageStage.BeforeSerialize:
         break;
      case SoapMessageStage.AfterSerialize:
         WriteOutput((SoapServerMessage)message);
         break;
      case SoapMessageStage.BeforeDeserialize:
         WriteInput((SoapServerMessage)message);
         break;
      case SoapMessageStage.AfterDeserialize:
         break;
      default:
         throw new Exception("invalid stage");
   }
}

// Write the contents of the incoming SOAP message to the log file.
public void WriteInput(SoapServerMessage message)
{
   // Utility method to copy the contents of one stream to another. 
   Copy(oldStream, newStream);
   FileStream myFileStream = new FileStream(filename, FileMode.Append, FileAccess.Write);
   StreamWriter myStreamWriter = new StreamWriter(myFileStream);
   myStreamWriter.WriteLine("================================== Request at "
      + DateTime.Now);
   myStreamWriter.WriteLine("The method that has been invoked is : ");
   myStreamWriter.WriteLine("\t" + message.MethodInfo.Name);
   myStreamWriter.WriteLine("The contents of the SOAP envelope are : ");
   myStreamWriter.Flush();
   newStream.Position = 0;
   Copy(newStream, myFileStream);
   myFileStream.Close();
   newStream.Position = 0;
}

// Write the contents of the outgoing SOAP message to the log file.
public void WriteOutput(SoapServerMessage message)
{
   newStream.Position = 0;
   FileStream myFileStream = new FileStream(filename, FileMode.Append, FileAccess.Write);
   StreamWriter myStreamWriter = new StreamWriter(myFileStream);
   myStreamWriter.WriteLine("---------------------------------- Response at " 
                                       + DateTime.Now);
   myStreamWriter.Flush();
   // Utility method to copy the contents of one stream to another. 
   Copy(newStream, myFileStream);
   myFileStream.Close();
   newStream.Position = 0;
   Copy(newStream, oldStream);
}

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.Services.Protocols

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Web.Services (System.Web.Services.dll 内)

参照

LogicalMethodInfo メンバ | System.Web.Services.Protocols 名前空間 | SoapExtension | GetInitializer | MethodInfo