次の方法で共有


HttpRequestMessageProperty.Method プロパティ

定義

HTTP 要求の HTTP 動詞を取得または設定します。

public:
 property System::String ^ Method { System::String ^ get(); void set(System::String ^ value); };
public string Method { get; set; }
member this.Method : string with get, set
Public Property Method As String

プロパティ値

String

HTTP 要求の HTTP 動詞。

例外

値が null に設定されています。

次のコードでは、メッセージからこのクラスのインスタンスを取得した後、このプロパティに基づいて異なるメソッドにディスパッチしています。

public Message ProcessMessage(Message request)
{
    Message response = null;

    //The HTTP Method (e.g. GET) from the incoming HTTP request
    //can be found on the HttpRequestMessageProperty. The MessageProperty
    //is added by the HTTP Transport when the message is received.
    HttpRequestMessageProperty requestProperties =
        (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];

    //Here we dispatch to different internal implementation methods
    //based on the incoming HTTP verb.
    if (requestProperties != null)
    {
        if (String.Equals("GET", requestProperties.Method,
            StringComparison.OrdinalIgnoreCase))
        {
            response = GetCustomer(request);
        }
        else if (String.Equals("POST", requestProperties.Method,
            StringComparison.OrdinalIgnoreCase))
        {
            response = UpdateCustomer(request);
        }
        else if (String.Equals("PUT", requestProperties.Method,
            StringComparison.OrdinalIgnoreCase))
        {
            response = AddCustomer(request);
        }
        else if (String.Equals("DELETE", requestProperties.Method,
            StringComparison.OrdinalIgnoreCase))
        {
            response = DeleteCustomer(request);
        }
        else
        {
            //This service doesn't implement handlers for other HTTP verbs (such as HEAD), so we
            //construct a response message and use the HttpResponseMessageProperty to
            //set the HTTP status code to 405 (Method Not Allowed) which indicates the client 
            //used an HTTP verb not supported by the server.
            response = Message.CreateMessage(MessageVersion.None, String.Empty, String.Empty);

            HttpResponseMessageProperty responseProperty = new HttpResponseMessageProperty();
            responseProperty.StatusCode = HttpStatusCode.MethodNotAllowed;

            response.Properties.Add( HttpResponseMessageProperty.Name, responseProperty );
        }
    }
    else
    {
        throw new InvalidOperationException( "This service requires the HTTP transport" );
    }

    return response;
}
Public Function ProcessMessage(ByVal request As Message) As Message Implements IUniversalContract.ProcessMessage
    Dim response As Message = Nothing

    'The HTTP Method (e.g. GET) from the incoming HTTP request
    'can be found on the HttpRequestMessageProperty. The MessageProperty
    'is added by the HTTP Transport when the message is received.
    Dim requestProperties As HttpRequestMessageProperty = CType(request.Properties(HttpRequestMessageProperty.Name), HttpRequestMessageProperty)

    'Here we dispatch to different internal implementation methods
    'based on the incoming HTTP verb.
    If requestProperties IsNot Nothing Then
        If String.Equals("GET", requestProperties.Method, StringComparison.OrdinalIgnoreCase) Then
            response = GetCustomer(request)
        ElseIf String.Equals("POST", requestProperties.Method, StringComparison.OrdinalIgnoreCase) Then
            response = UpdateCustomer(request)
        ElseIf String.Equals("PUT", requestProperties.Method, StringComparison.OrdinalIgnoreCase) Then
            response = AddCustomer(request)
        ElseIf String.Equals("DELETE", requestProperties.Method, StringComparison.OrdinalIgnoreCase) Then
            response = DeleteCustomer(request)
        Else
            'This service doesn't implement handlers for other HTTP verbs (such as HEAD), so we
            'construct a response message and use the HttpResponseMessageProperty to
            'set the HTTP status code to 405 (Method Not Allowed) which indicates the client 
            'used an HTTP verb not supported by the server.
            response = Message.CreateMessage(MessageVersion.None, String.Empty, String.Empty)

            Dim responseProperty As New HttpResponseMessageProperty()
            responseProperty.StatusCode = HttpStatusCode.MethodNotAllowed

            response.Properties.Add(HttpResponseMessageProperty.Name, responseProperty)
        End If
    Else
        Throw New InvalidOperationException("This service requires the HTTP transport")
    End If

    Return response
End Function

注釈

既定では、WCF は HTTP メッセージに POST 動詞を使用します。 GET 動詞は、ServiceHost のベース アドレスにアクセスするときにヘルプ情報を表示するために WCF によって使用されます。 これは、Web ブラウザーを使用するときに WCF サービスがアクティブかどうかを確認する場合に役立ちます。 HTTP RFC で定義されているその他のメソッドは、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT です。 他のサービスとの相互運用時に、これらのメソッドは特殊な動作を示します。

適用対象