次の方法で共有


SoapRpcMethodAttribute クラス

SoapRpcMethodAttribute をメソッドに適用することにより、そのメソッドとの間で送受信される SOAP メッセージに RPC 書式を適用することを指定できます。

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

System.Object
   System.Attribute
      System.Web.Services.Protocols.SoapRpcMethodAttribute

<AttributeUsage(AttributeTargets.Method)>
NotInheritable Public Class SoapRpcMethodAttribute   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Method)]
public sealed class SoapRpcMethodAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Method)]
public __gc __sealed class SoapRpcMethodAttribute : public   Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Method)
class SoapRpcMethodAttribute extends Attribute

スレッドセーフ

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

解説

Web サービス記述言語 (WSDL: Web Services Description Language) では、操作を呼び出す XML Web サービス メソッドの SOAP メッセージ内における書式として、 RPCDocument の 2 つのスタイルを定義しています。 RPC スタイルは、SOAP 仕様の RPC としての SOAP の使用に関する規定 (SOAP 仕様のセクション 7) に従って操作の書式を指定することを示します。 Document スタイルは、XML Web サービス メソッドの名前が付いている単一の XML 要素内にすべてのパラメータをカプセル化し、その XML 要素内の各 XML 要素が各パラメータを表し、各要素にはそれぞれが表すパラメータの名前が付けられることを指定します。

RPC (Remote Procedure Call) で XML Web サービスと通信する場合は、 RPC スタイルおよび Document スタイルで書式設定された SOAP メッセージを使用できます。 Document スタイルは、疎結合で通信する場合にも簡単に使用できます。したがって、 Document スタイルの XML Web サービスを推奨します。詳細については、 Customizing SOAP Messages のトピックを参照してください。

詳細については、「 SOAP メッセージのカスタマイズ 」を参照してください。この属性は、サーバー上の XML Web サービス メソッドと、クライアント上のプロキシ クラスに適用できます。 OneWay プロパティが true に設定されている XML Web サービス メソッドは、その HttpContext にはアクセスできません。このため、 WebService クラスのプロパティのいずれかにアクセスすると、 null 参照 (Visual Basic では Nothing) が返されます。

使用例

[Visual Basic, C#] GetUserName XML Web サービス メソッドに対して、メッセージ スタイルを Rpc に設定するコード例を次に示します。

 
<%@ WebService Language="VB" class="MyUser" %>
Imports System
Imports System.Web.Services
Imports System.Web.Services.Protocols

Public Class MyUser
    Inherits WebService    
    
    <SoapRpcMethod(Action := "https://www.contoso.com/Sample", _
    RequestNamespace := "https://www.contoso.com/Request", _
    RequestElementName := "GetUserNameRequest", _
    ResponseNamespace := "https://www.contoso.com/Response", _
    ResponseElementName := "GetUserNameResponse"), _
    WebMethod(Description := "Obtains the User Name")> _
    Public Function _
        GetUserName() As UserName
        
        Dim temp As String
        Dim pos As Integer
        Dim NewUser As New UserName()
        
        ' Get the full user name, including the domain name if applicable.
        temp = User.Identity.Name
        
        ' Determine whether the user is part of a domain by searching for a backslash.
        pos = temp.IndexOf("\")
        
        ' Parse out the domain name from the string, if one exists.
        If pos <= 0 Then
            NewUser.Name = User.Identity.Name
        Else
            NewUser.Name = temp.Remove(0, pos + 1)
            NewUser.Domain = temp.Remove(pos, temp.Length - pos)
        End If
        Return NewUser
    End Function
End Class 

Public Class UserName
    
    Public Name As String
    Public Domain As String
End Class


[C#] 
<%@ WebService Language="C#" class="MyUser" %>
 using System;
 using System.Web.Services;
 using System.Web.Services.Protocols;
 
 public class MyUser : WebService {
 
       [ SoapRpcMethod(Action="https://www.contoso.com/Sample", 
           RequestNamespace="https://www.contoso.com/Request",
           RequestElementName="GetUserNameRequest",
           ResponseNamespace="https://www.contoso.com/Response",
           ResponseElementName="GetUserNameResponse")]
      [ WebMethod(Description="Obtains the User Name") ]
      public UserName GetUserName() {
           string temp;
           int pos;
           UserName NewUser = new UserName();
           
           // Get the full user name, including the domain name if applicable.
           temp = User.Identity.Name;
 
           // Determine whether the user is part of a domain by searching for a backslash.
           pos = temp.IndexOf("\\");
           
           // Parse out the domain name from the string, if one exists.
           if (pos <= 0)
                 NewUser.Name = User.Identity.Name;
           else {
               NewUser.Name = temp.Remove(0,pos+1);
                 NewUser.Domain = temp.Remove(pos,temp.Length-pos);
           } 
       return NewUser;
      }
 
 }   
 
 public class UserName {
 
     public string Name;
     public string Domain;
 }

[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 内)

参照

SoapRpcMethodAttribute メンバ | System.Web.Services.Protocols 名前空間 | SoapDocumentMethodAttribute | SoapRpcServiceAttribute | SoapDocumentServiceAttribute