HttpRequestMessageProperty.Method HttpRequestMessageProperty.Method HttpRequestMessageProperty.Method HttpRequestMessageProperty.Method Property

Definition

Gets or sets the HTTP verb for the HTTP request.

public:
 property System::String ^ Method { System::String ^ get(); void set(System::String ^ value); };
[get: System.Runtime.TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public string Method { get; set; }
member this.Method : string with get, set
Public Property Method As String
Property Value

The HTTP verb for the HTTP request.

Exceptions

Examples

The following code gets an instance of this class from the message and then dispatches to different methods based on this property.

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

Remarks

By default, WCF uses the POST verb for HTTP messages. The GET verb is used by WCF to display help information when accessing a ServiceHost's base address. This is useful for checking whether a WCF service is active when using a Web browser. Other methods defined by the HTTP RFC are PUT, DELETE, HEAD, OPTIONS, TRACE, and CONNECT. These methods have special behaviors when interoperating with other services.

Applies to