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 メッセージ内における書式として、 RPC と Document の 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