6 Appendix A: Product Behavior

The information in this specification is applicable to the
following Microsoft products or supplemental software. References to product
versions include released service packs.

This document specifies version-specific details in the
Microsoft .NET Framework. The following versions of .NET Framework are
available in the following released Windows product or as supplemental
software, see .NET Framework.

Microsoft .NET Framework 1.0

Microsoft .NET Framework 2.0

Microsoft .NET Framework 3.0

Microsoft .NET Framework 3.5

Microsoft .NET Framework 4.0

Microsoft .NET Framework 4.5

Windows 10 operating system

Exceptions, if any, are noted below. If a service pack or
Quick Fix Engineering (QFE) number appears with the product version, behavior
changed in that service pack or QFE. The new behavior also applies to
subsequent service packs of the product unless otherwise specified. If a
product edition appears with the product version, behavior is different in that
product edition.

Unless otherwise specified, any statement of optional behavior
in this specification that is prescribed using the terms SHOULD or SHOULD NOT
implies product behavior in accordance with the SHOULD or SHOULD NOT
prescription. Unless otherwise specified, the term MAY implies that the product
does not follow the prescription.

<1>
Section 1.3.2: Windows allows applications to plug in extensions called
Envoy Sinks that are run when a Remote Method is invoked.
The actual interface of the extension is beyond the scope of this protocol.
Windows uses the Envoy Sink
Information to send a list of Envoy Sinks from the server to the client to
carry out any client-side behavior such as validating parameters. If there is
no application-provided data, this field is a NullObject in Windows.

<2>
Section 2.1.1.1.1: Windows maintains a pool of connections for a given
ServerObject (identified by its address). Each pool has a receive time-out and
a connection time-out. Connections are preserved until the connection time-out
expires. A new connection is created if there are no cached connections or if
the connection is configured to do SPNEGOauthentication.

<13>
Section 2.1.2.1.2: Windows supports HTTP redirection (status code specified
in [RFC2616] section
10.3). The higher layer can configure to disable HTTP redirection. If disabled,
the higher layer is notified of the error. The informational codes (the status
code specified in section [RFC2616] 10.1) are handled as specified in [RFC2616]
and are not propagated to the higher layer.

<14>
Section 2.1.3.1.1.1: Windows sets the User-Agent to
"Mozilla/4.0+(compatible; MSIE 6.0; Windows <Windows-Ver>; MS .NET
Remoting; MS .NET CLR <.NET-Ver> )" where "Windows-Ver"
refers to the version of Windows and ".NET-Ver" refers to the version
of .NET Framework.

<15>
Section 2.1.3.1.1.2: Windows supports HTTP redirection (status code
specified in [RFC2616] section 10.3). The higher layer can configure to disable
HTTP redirection. If disabled, the higher layer is notified of the error. The
informational codes (status code specified in [RFC2616] section 10.1) are
handled as specified in [RFC2616] and are not propagated to the higher layer.

For a given DelegateSerializationHolder,
the Index value starts from 0 and increases by 1 for each target Member. The
Index value matches the index of the DelegateEntry for the
Remote Method in the linked list.

<25>
Section 2.2.4.1: Windows allows the application to associate a SOAP action with a Remote
Method. In the absence of such an association, Windows derives SOAPAction from
the Remote Method name by concatenating the XML namespace of the Server Type and the Remote
Method name separated by a number sign ('#').

SoapAction = XML namespace of Server Type '#' Remote Method
Name where XML namespace of a Server Type is constructed as specified in
section Remoting Type Name
Encoding.

ClrNamespace nonterminal token in TypeName in the
Common Patterns section

UriEncoded(LibraryName )

=

LibraryName as defined in the Common Patterns section
with characters ' ' (SPACE) replaced with '%20', '=' replaced with '%3D' and
',' replaced with '%2C'

If the application did not explicitly define it, the local
name is defined by the LocalName nonterminal token in TypeName in the Common
Patterns section.

<27>
Section 2.2.4.3: Windows allows the application to associate an XML
namespace and a local name for the request and response. In the absence of such
an association, Windows derives the XML namespace from the Server Type name and
the Library name by using the ABNF syntax defined in [RFC4234], specified as
follows.

How Windows derives an XML namespace from the
Server Type name and the Library name

<34>
Section 3.1.5.1.2: Windows allows extensions of its implementation to
participate in the serialization of a message. It allows the extensions to
provide a collection of DictionaryEntry items that are serialized as Message
Properties.

<35>
Section 3.1.5.1.6: Windows always writes using the ClassWithMembersAndTypes
for Classes that are not
in the System Library. Windows can read all the versions. Windows uses the ClassWithId
record to write subsequent instances of a Class unless the Members that are
serialized vary from one instance to another; in that case, Windows uses the
Class records with Member information.

<36>
Section 3.1.5.1.6: Windows always writes using the SystemClassWithMembersAndTypes
for classes that are in the System Library and ClassWithMembersAndTypes for
Classes that are not in the System Library. Windows can read all the versions.
Windows uses the ClassWithId record to write subsequent instances of a Class
unless the Members that are serialized vary from one instance to another; in
that case, Windows uses the Class records with Member information.

<38>
Section 3.1.5.2.1: Windows allows extensions of its implementation to
participate in the serialization of a message. Windows allows the extensions to
provide a collection of name-value pairs. The name is written as the local name
of the header element. The namespace of the header element is
"http://schemas.microsoft.com/clr/soap/messageProperties". The value
is encoded as specified in Mapping
Remoting Data Model to SOAP Format (section 3.1.5.2).

<39>
Section 3.1.5.2.2: Windows allows extensions of its implementation to
participate in the serialization of a message. It allows the extensions to
provide a collection of name-value pairs. The name is written as the local name
of the header element. The namespace of the header element is
"http://schemas.microsoft.com/clr/soap/messageProperties". The value
is encoded as specified in the Data Values Encoding section.

<40>
Section 3.1.5.2.2: Windows gets the name of the response struct (child of
the SOAP Body element in the response message) by appending the name of the
request struct (child of the SOAP Body element in the request message) with the
string "Response". The name of the Return Value accessor in Windows
is "return".

<41>
Section 3.1.5.2.11: Windows server implementation never writes the faultactor
field. However it can consume a SOAP fault message with the faultactor
field present.

If there is more than one Remote Method in the Server Type
with the given name, Windows uses the Method Signature de-serialized
to disambiguate. For each of the matching Remote Methods, the Remoting Types in
the Method Signature are checked against the Remoting Type of the Remote
Method's Argument. If all the Remoting Types match, then the Remote Method is
chosen. If no Remote Method matches the Method Signature or if there are
multiple matches and no Method Signature, then a RemotingException is
constructed as specified in the Constructing a Remoting
Exception (section 3.2.5.1.7.2) section and the Exception MUST be sent
back to the client.

When using the SOAP protocol, if the Message Frame has a
SOAP-Action header then the SOAP-Action is compared with the SOAP-Action
inferred for the Remote Method as specified in the SOAP Action
String (section 2.2.4.1) section. If they do not match, then a
RemotingException is constructed as specified in the Constructing a Remoting
Exception (section 3.2.5.1.7.2) section and the Exception is sent
back to the client.

<44>
Section 3.2.5.1.4: The Server Object is a CLR object whose type is Server
Type and the Remote Method maps to a method in the Class. The Array of Data Values is passed as
parameters to the method. The CallContext is passed as thread-specific
CallContext values in the CLR.

The GuidPart is a string representation of a GUID with '-'
replaced by '_'. Windows uses the same GUID for all the Server Object URIs
hosted in an AppDomain.
The BytePart consists of 18 randomly generated bytes that are Base64 encoded. The bytes
are generated for every Marshaled
Server Object. SequenceId is an integer ranging from -2,147,483,648 to
2,147,483,647. It starts from 1 and is incremented for every Marshaled Server
Object. Incrementing SequenceId value from 2,147,483,647 wraps it to be
-2,147,483,648.

<46>
Section 3.2.5.1.7.1: Windows populates the Message field with a
localized text message describing the error. The StackTraceString contains text
describing the call stack from where the Exception is thrown. The
RemoteStackTraceString is NullObject. RemoteStackIndex is 0. ExceptionMethod
contains text that lists the Method name, Library name and Remoting Type name.
Source contains text representing the name of the Application.

<47>
Section 3.2.5.1.7.2: Windows populates the Message field with a
localized text message describing the error. The StackTraceString contains text
describing the call stack from where the Exception is thrown. The
RemoteStackTraceString is NullObject. RemoteStackIndex is 0. ExceptionMethod
contains text that lists the Method Name, Library name, and Remoting Type name.
Source contains text representing the name of the Application.

<48>
Section 3.3.4.2.1: Windows constructs a MethodSignature when there is more
than one method with the same name in a Server Type. In this case the
MethodSignature is used to disambiguate the methods.

Show:
Inherited
Protected

Was this page helpful?

Your feedback about this content is important.Let us know what you think.