OperationContractAttribute.Action Property
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Gets or sets the WS-Addressing action of the request message.
Namespace: System.ServiceModel
Assembly: System.ServiceModel (in System.ServiceModel.dll)
Syntax
'Declaration
Public Property Action As String
public string Action { get; set; }
Property Value
Type: System.String
The action to use in generating the WS-Addressing Action header.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | The value is nulla null reference (Nothing in Visual Basic). |
Remarks
Use the Action property to control the action of the method's input message. Because Silverlight 5 uses this action to dispatch an incoming message to the appropriate method, messages used within a contract operation must have unique actions. The default action value is a combination of the contract namespace (the default value is "http://tempuri.org/"), the contract name (interface name or the class name, if no explicit service interface is used), the operation name, and an additional string ("Response") if the message is a correlated response. You can override this default with the Action property.
To indicate that a service operation handles all messages that the service receives but cannot be directed to a service operation, specify the value "*" (an asterisk). This type of operation, called an unmatched message handler, must have one of following method signatures, or a InvalidOperationException is thrown:
The service operation can take only a Message object and return a Message object.
The service operation can take only a Message object and return nothing (that is, return void).
Note: |
---|
A service contract can have only one service operation with the Action property set to "*". Any group of service contracts hosted at the same listenUri that a service class implements can have many service operations with the Action property set to "*" when the IsInitiating property is set to false. However, only one of those service operations can have the Action property set to "*" and the IsInitiating property set to true. For more information, see IsInitiating. |
Examples
' A service contract defined with a class
' for an operation that handles all messages the service receives.
<ServiceContract(Name := "SampleServiceContract2", Namespace := "http://microsoft.SL3.documentation")> _
Public Class CustomerService
<OperationContract(Name := "SampleOperationContract1")> _
Public Function CountUsers() As Integer
Return 2
End Function
<OperationContract(Action := "*")> _
Public Function GetUser(ByVal id As Integer) As User
If id = 1 Then
Return New User() With {.IsMember = True, .Name = "Paul", .Age = 24}
Else
Return New User() With {.IsMember = False, .Name = "John", .Age = 64}
End If
End Function
End Class
<DataContract> _
Public Class User
Private privateIsMember As Boolean
<DataMember> _
Public Property IsMember() As Boolean
Get
Return privateIsMember
End Get
Set(ByVal value As Boolean)
privateIsMember = value
End Set
End Property
Private privateName As String
<DataMember> _
Public Property Name() As String
Get
Return privateName
End Get
Set(ByVal value As String)
privateName = value
End Set
End Property
Private privateAge As Integer
<DataMember> _
Public Property Age() As Integer
Get
Return privateAge
End Get
Set(ByVal value As Integer)
privateAge = value
End Set
End Property
End Class
// A service contract defined with a class
// for an operation that handles all messages the service receives.
[ServiceContract(
Name = "SampleServiceContract2",
Namespace = "http://microsoft.SL3.documentation")]
public class CustomerService
{
[OperationContract(Name = "SampleOperationContract1")]
public int CountUsers()
{
return 2;
}
[OperationContract(Action = "*")]
public User GetUser(int id)
{
if (id == 1)
{
return new User() { IsMember = true, Name = "Paul", Age = 24 };
}
else
{
return new User() { IsMember = false, Name = "John", Age = 64 };
}
}
}
[DataContract]
public class User
{
[DataMember]
public bool IsMember { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
XNA Framework
Supported in: Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.