Microsoft Pre-Release Software WinFX Runtime Components Beta 1


Microsoft Corporation

July 2005

Applies to:
   Windows Communication Foundation
   Windows Presentation Foundation
   Microsoft Visual Studio

Summary: Review known issues for WinFX Runtime Components Beta 1. (26 printed pages)


WinFX Runtime Components Installation Known Issues
Windows Communication Foundation Known Issues
Windows Presentation Foundation Known Issues
Visual Studio Known Issues
Project Templates Known Issues

WinFX Runtime Components Installation Known Issues

Administrator Deployment is not working for WinFX Runtime Components Beta.

Administrator deployment using SMS or Active Directory is not supported for WinFX Runtime Components Beta.

Download failure when downloading and installing WinFX Runtime Components Beta.

The download and installation of a winFX Runtime Components Beta will intermittently fail.

To resolve this issue

Rerun winfxsetup.exe from the Web site and try the download again.

Antivirus Applications that are configured to clean the Temp folder will cause setup to fail if it needs to reboot.

If setup needs to reboot, and the Antivirus application is set to clean the temp directory on launch, necessary setup files will be deleted and setup will fail with a program-not-found error.

To resolve this issue

Change the Antivirus applications configuration to not clean the temp folder on launch or reboot before running Visual Studio Setup. Reference the Antivirus help documentation for steps on how to do this.

Setup does not check disk space when auto-launching after reboot later is selected.

When reboot later is selected, if the hard drive is filled by other applications past the amount of space that is needed by Setup, an out of space error will occur in setup on reboot.

To resolve this issue

Ensure there is sufficient remaining disk space on the system when rebooting after selecting reboot later if other applications have used a lot of disk space. The required disk space is displayed when selecting the location to install the product.

WinFX Runtime Components Beta Setup: Launching Maintenance Mode from Add or Remove Program can take several minutes and might give the appearance that setup has failed.

If you have other processes running when you launch Maintenance Mode, such as virus scanning software, these processes can slow setup considerably and give the appearance that setup has failed.

To resolve this issue

Temporarily disable virus-scanning software before launching Maintenance Mode.

Microsoft .NET Framework Redistributable 2.0 Beta 2 install fails on a 64-bit machine with error code 25008.

  1. On a Windows 2003 64-bit machine with RTM OS or SP-1 build <1184.
  2. Run WinFX Runtime Components Beta install.
  3. Microsoft .NET Framework Redistributable 2.0 Beta 2 setup will fail with error code 25008.

WinFX Runtime Components is not supported on Windows 2003 and Windows 2003 SP-1 with build numbers less than 1184 running on 64-bit machines.

To resolve this issue

Install a new OS (Windows 2003 64-bit with SP1 build greater than or equal to 1184).

Installing on 64-bit OS when IIS 6 is in WoW 64 mode will disable ASP.NET v 1.1 in IIS.

Microsoft WinFX Runtime Components installs 64bit Microsoft .NET Framework Redistributable 2.0 Beta 2 on machines running 64-bit OSs. Existing ASP.NET v 1.1 applications will be disabled when installing the 64-bit .NET Framework 2.0 Beta 2 on a 64-bit OS that has IIS6 in WoW64 mode and ASP.NET 1.1 enabled. This is caused by the Framework setup incorrectly mapping the aspnet_filter to the 64-bit version and removing the v 1.1 of the aspnet_isapi extension.

To resolve this issue

To workaround this problem you will need to manually change IIS to use the 32 bit version of the aspnet_filter and add back the ASP.NET v1.1 ISAPI extension.

  1. Start Internet Information Services Manager (inetmgr.exe).

  2. Expand the local computer node, click on Web Sites node.

  3. From the Action menu select the Properties menu item.

  4. In the Web Site Properties dialog box select the ISAPI Filters tab.

  5. In the list of filters select the ASP.NET 2.0 filter and click the Remove button.

  6. Click the Add button and enter the following:

    Filter Name: ASP.NET_ 1.1.4322

    Executable: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_filter.dll

  7. Click OK.

  8. Under the local computer node click on the Web Service Extensions node.

  9. Under Tasks click on Add a new Web Service Extension.

  10. In the New Web Service Extension dialog box enter the following:

    Extension Name: ASP.NET v1.1.4322

    For Required files click Add... and enter: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll

    Check Set Extension status to Allowed.

    Click OK.

Windows Communication Foundation Known Issues

Use the Impersonation Setting in Windows Communication Foundation (formerly code-named "Indigo")

ASP.NET configuration contains the following entry under <system.web>:

        identity Attributes:
          impersonate="[true|false]"-Impersonate Windows User
            userName="Windows user account to impersonate" | empty string implies impersonate the LOGON user specified by IIS
            password="password of above specified account" | empty string
<identity impersonate="false" />

This setting is not used by this version of Windows Communication Foundation. Therefore, if you have a Web site with identity impersonation enabled (either via true or userName/password) and you deploy a Windows Communication Foundation service on that site, the service will not use the impersonation behavior specified in the identity impersonate configuration. If you are accessing a protected resource and are relying on ASP.NET impersonation to ensure that you access that resource under the impersonated identity, you should NOT assume that the identity will be the same in Windows Communication Foundation .SVC service as it is from an .ASPX page or .ASMX service.

If your scenario using Windows Communication Foundation requires impersonation, you should use the ServiceModel [impersonation] attribute.

KnownTypes attribute improperly allowed to be set on interfaces

The KnownTypesAttribute is marked such that its usage is allowed on interfaces. However, this usage of the attribute is intended for service contract interfaces only (those marked with the ServiceContractAttribute) in order to add known types to operation parameters and return values. In serialization scenarios, the KnownTypesAttribute on interfaces will be ignored.

For example, the following is correct usage:

   public interface IMyInterface
      void myOperation (MyType x);
   public class MyType {/* ... */} 
   public class MyDerivedType : MyType {/* ... */}
In this case, MyDerivedType can successfully be sent as a parameter to myOperation.
However, the following is incorrect, even though it will not generate a compiler error:
   public class MyService
      void myOperation (IMyInterface x) {/* ... */}
      public interface IMyInterface {/* ... */}
      Public class MyType : IMyInterface {/* ... */}

In this case, an instance of MyType cannot be passed to myOperation, because the KnownTypeAttribute on IMyInterface will be ignored.

Handle duplication fails in messaging scenarios that require TCP port sharing

The Windows Communication Foundation TCP Port Sharing Service (ITCPPSS) will duplicate handles into calling processes under certain conditions. By default, ITCPPSS is configured to run as Network Service. As such, it does not have the privileges required to support handle duplication into any account other than Network Service. If a developer writes a Windows Communication Foundation Service application running under any other NT account that listens on TCP and uses port sharing, an exception may occur if a Windows Communication Foundation Client application initiates a message pattern that requires handle duplication. These patterns include any contract that uses Session behavior, any contract that defines a Callback Contract, and any binding that does not use TransferMode.Buffered. The exception thrown on the Windows Communication Foundation Client application under these conditions is as follows:

"System.InvalidOperationException: Server faulted with code"

There are a number of possible workarounds to avoid this:

  • Run the Windows Communication Foundation Service application as Network Service.
  • Configure the ITCPPSS to run under the same credentials as the Windows Communication Foundation Service application.
  • Run the ITCPPSS under its own account; then, in the Windows Communication Foundation Service application's process, grant the PROCESS_DUP_HANDLE* access right to that account.
  • In the Windows Communication Foundation Service application's process, grant the PROCESS_DUP_HANDLE* access right to the Network Service.

*Before granting the PROCESS_DUP_HANDLE access right in any process to any account, make sure you read and understand the following caution:

Caution   A process that has some of the access rights noted here can use them to gain other access rights. For example, if process A has a handle to process B with PROCESS_DUP_HANDLE access, it can duplicate the pseudo handle for process B. This creates a handle that has maximum access to process B. For more information on pseudo handles, see GetCurrentProcess.

More information is available here.

Proactive recycling and reliable sessions

If a Windows Communication Foundation service is running in IIS and is configured to rely on in-process session state, the in-process state will not be persisted across a process recycle. Furthermore, if a reliable session is active, the session will not be able to complete once an IIS recycling trigger has been hit.

If your application is running in IIS and needs to use reliable sessions, it should be configured to run in an IIS application pool that has proactive recycling triggers disabled. Examples of such triggers include message count recycling or scheduled recycling. To disable these triggers in IIS 6:

  1. Go to the Internet Information Services snap-in under Administrative Tools.
  2. Select the Application Pool associated with the Web site where the Windows Communication Foundation service is running.
  3. Uncheck all of the recycling conditions except for idle shutdown.

MetadataResolver Binding Must Use SOAP Version 1.1

When using the MetadataResolver to dynamically download data, the binding used must match the binding required by the targeted MetadataExchange endpoint. In addition, in this version of Windows Communication Foundation the MetadataExchange endpoint and MetadataResolver support only SOAP 1.1.

Application developers should ensure that the custom MetadataExchange endpoint is using SOAP 1.2 and that the binding used by MetadataResolver matches the binding used by the MetadataExchange endpoint. Note that for the default MetadataExchange endpoint, a SOAP 1.2 binding is used by default.

Using multiple proxies with netdualtcpbinding

NetDualTcpBinding creates a temporary address for its Proxies. By default this temporary address is set up to use Exclusive Tcp + port 808. Therefore, if multiple proxies are created, they need to be in the same app-domain. Otherwise, the second process will get the following exception:

"System.ServiceModel.AddressAlreadyInUseException: Another application is listening on IP Endpoint= ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted"

There are two workarounds for this issue:

Explicitly specify a different port by setting binding.ClientBaseAddress (such as "net.tcp://machine:8080/foo").

Set binding.TcpPortSharingEnabled = true.

Possible error when generating proxies for Web services

When using svcutil.exe to generate a proxy for a Web service, the tool may terminate with an error. This is due to the fact that by default, svcutil.exe expects a given Web service to conform to the Data Contract XSD conventions to which many Web services don't conform.

To successfully generate a proxy, you can use the "/uxs" command line option to override this default behavior (we expect to handle this automatically in a future release). Additionally, the "/tm" option may be required for some Web services. With the addition of these options, proxy generation should complete successfully.

Sending and Receiving Instances of Collection, Dictionary, and SortedDictionary

When sending or receiving instances of the types System.Collections.ObjectModel.Collection<T>, System.Collections.Generic.Dictionary<K,V>, and System.Collections.Generic.SortedDictionary<K,V>, if an operation parameter or return value is of one of these types (or of a type that contains a member of one of these types anywhere in its object graph), an exception will be thrown during deserialization on the receiving end.

To work around the issue, add the following to config:

         <add type="System.Collections.Generic.SortedDictionary`2, System, 
                     Version=, Culture=neutral,
            <knownType type="System.Collections.Generic.
                  System, Version=, Culture=neutral,
               <parameter index="0" />
               <parameter index="1" />
            <knownType type="System.Collections.Generic.
                              mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
            <knownType type="System.Collections.Generic.KeyValuePair`2, 
                              mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
               <parameter index="1" />
         <add type="System.Collections.ObjectModel.Collection`1, mscorlib, 
                     Version=, Culture=neutral, 
            <knownType type="System.Collections.Generic.List`1, mscorlib, 
                              Version=, Culture=neutral, 
               <parameter index="0" />
         <add type="System.Collections.Generic.SortedList`2, 
                     System, Version=, Culture=neutral, 
            <knownType type="System.Collections.Generic.GenericComparer`1, 
                              mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
            <knownType type="System.Collections.Generic.ObjectComparer`1, 
                              mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
         <add type="System.Collections.Generic.Dictionary`2, mscorlib, 
                     Version=, Culture=neutral, 
                        mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
                        mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
            <knownType type="System.Collections.Generic.KeyValuePair`2,
                              mscorlib, Version=, Culture=neutral, 
               <parameter index="0" />
               <parameter index="1" />

Users may see an unhandled exception error when attempting to access Web-hosted Windows Communication Foundation Services on Microsoft Windows XP Service Pack 2

When attempting to access a Web-hosted service on Microsoft Windows XP Service Pack 2, users may see the following error message:

"Server Error in '/VDir' Application. The tracking (workstation) service is not running."

where "/VDir" is the name of the virtual directory in which you're running the service.

Note that this error does not occur on Microsoft Windows Server 2003.

Workaround: From a command prompt, run the following commands:

  • net start httpfilter
  • iisreset

This will restore normal operation.

Web-hosted Services Fail When IIS is installed after the Windows Communication Foundation Installer

If IIS is installed or reinstalled after you run the Windows Communication Foundation installer, Web-hosted services will throw the following exception:

[HttpListenerException (0x5): Access is denied]
   System.Net.HttpListener.AddAll() +298
   System.Net.HttpListener.Start() +207
   System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() +653
      [AddressAccessDeniedException: HTTP could not register URL 
      cc53ef624d6d/.  Your process does not have access rights to this 
      namespace (see
      namespace_reservations_registrations_and_routing.asp for details).]
   System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() +1043
      Open(TransportListenerFactory listenerFactory) +129

There are two ways to resolve this issue:

  1. Uninstall Windows Communication Foundation using Add/Remove Programs as described above, then reinstall Windows Communication Foundation by running msgbus.exe.
  2. From a command line, run the following commands:
    • "%windir%\\framework\v2.0.50105\aspnet_regiis.exe" -i
    • "%ProgramFiles%\Microsoft Indigo Preview\xws_reg.exe" -i
    • cscript "%ProgramFiles%\Microsoft Indigo Preview\InstallIndigo.js"

Svcutil.exe can hang when running against a self-HOSTED service in Visual Studio Debugger with output redirected to Quick Console

It is possible for svcutil.exe to hang when it is run against a Windows Communication Foundation service when all the following conditions are true:

  • Hosting a Windows Communication Foundation service in a console application that starts the service, then uses Console.ReadLine to exit, and
  • Running the service in the Visual Studio debugger, and
  • Redirecting the console output to Visual Studio's Quick Console

To avoid this issue, direct the output back to the console window. You can do this from within Visual Studio. Under the Tools, Options menu, select Debugging, General. Then uncheck the item Redirect all console output to the Quick Console window.

WS-AT Will Failfast When Participant Enlistment Is Recovered and Binding Is Not Enabled

Under a specific set of conditions, the MSDTC service may terminate with a fatal error. Subsequently, it may consistently fail to either be restarted or be brought back online. This can happen if the MSDTC service is stopped while active transactions are in progress and if the administrator then changes the WS-AT protocol configuration to disable support for a specific type of participant that was involved in an in-progress transaction.

For example, the following sequence may trigger the issue:

  1. Enable the WS-AT protocol's interoperable endpoint by setting the following registry value:

    • HKLM\Software\Microsoft\MSDTC\WSAT\InteropEnabled -> REG_DWORD = 1 (enabled) or 0 (disabled).
    • Default value is 0.
  2. Restart MSDTC.

  3. Shut down MSDTC while there are either in-doubt transactions or failed-to-notify transactions with interop participants.

  4. Disable the WS-AT protocol's interoperable endpoint and restart MSDTC.

  5. MSDTC may failfast, in which case the following event log traces will be present in the Application Event Log.

    Source: .NET Runtime

    Event ID: 1023

    Type: Error

    .NET Runtime version 2.0.50215: Failfasting due to unexpected state machine event: TmRejoinEvent

    For more information, see the Help and Support Center.

    Source: Microsoft.Transactions.Bridge

    Event ID: 0

    Type: Error

    <TraceRecord xmlns="
          <Description>A state machine attempted to process an unexpected 
                      event. The event was considered fatal.</Description>
          <ExtendedData xmlns="
                <TypeDelimiter />
                      <state name="DurableFailedRecovery">
                         <event name="TmRejoinEvent" />
                <UnexpectedEventDetails nil="true" />

    For more information, see the Help and Support Center.

To recover from this error, re-enable the WS-AT protocol's interoperable endpoint, restart MSDTC, and allow any outstanding transactions to be resolved.

Windows Communication Foundation Beta 1 MSMQ Support Package Required

If you attempt to use either the MsmqTransport channel or the MsmqIntegration channel without Windows Communication Foundation Beta 1 MSMQ Support Package Required installed, you will see the following exception:

"MSMQ version 3.5 or newer required"

This version of MSMQ is available for download at This requirement is only for testing purposes with Beta 1, and will not be required for future Windows Communication Foundation releases.

The features available using MSMQ version 3.0 on Windows XP and Windows Server 2003 will be documented in a future release.

Note   Please make sure that you install MSMQ using Add/Remove Programs first before you run the Windows Communication Foundation Beta 1 MSMQ Support Package installer.

Error when using an MSMQ Default binding in workgroup mode

When you use an MSMQ Default binding in the workgroup mode, you will get an error that says that MSMQ cannot find an internal certificate. This is because the default MSMQ binding has transport security turned on and MSMQ requires the Active Directory for security to work. This issue will be addressed in a future release.

To avoid this issue, turn off both the MSMQ authentication mode and the protection level in the binding. A configuration snippet for transport binding and integration binding is provided below:

<binding configurationName="Binding2"
msmqAuthenticationMode ="None"
<binding configurationName="Binding2"
msmqAuthenticationMode ="None"

Cannot use MSMQ transport security with SRMP addressing mode

MSMQ transport security will not work when you are using the SRMP addressing mode. This will be addressed in a future release.

To avoid this issue, turn off both the MSMQ authentication mode and the protection level in the binding.

Message loss when using queues and transactions in singleton instance mode

When you are using the singleton instance mode, if you invoke a service operation that is based on a message read from a transactional queue and if the service operation chooses to roll back the transaction, the message will not be put back in the queue and the service operation will not be retried. This issue will be fixed in a future release.

Transactions not rolled back when throwing an exception under certain conditions

When you throw an exception from a service operation, the transaction does not roll back if the following Operation Behaviors are set:

  • AutoEnlist=true
  • AutoComplete=false

To avoid this issue, you can do one of two things:

  1. Call Transactions.Current.Rollback() in the service operation with AutoEnlist=true and AutoComplete=false.
  2. Set AutoComplete=true and throw an exception in the service operation to rollback the transaction.

Generating a Proxy from a Queued Session Contract

When you generate a proxy from a queued session contract using svcutil.exe, the generated proxy does not reflect the session semantics in the contract. This issue will be addressed in a future release.

To avoid this issue, open the generatedproxy.cs file and add Session=true in the ServiceContract.

Windows Communication Foundation Service with MSMQ Integration Binding

If you define two operations on a Windows Communication Foundation service that uses an MSMQ integration binding, sometimes one or the other operation will be invoked. This will be addressed in a future release.

The WinFX SDK contains a sample that shows the proper way to do demuxing.

MSMQ messages without a body are improperly handled

When you receive a message from an existing MSMQ application without a body, the MSMQ integration channel will ignore the message. When you send a message without a body from a Windows Communication Foundation sender to an existing MSMQ application, the integration channel will throw an exception that states that the body is not sent. These issues will be addressed in a future release.

Sending a GUID using the MSMQ integration channel Fails when using the ActiveX formatter

When you send a message that contains a GUID using the MSMQ integration channel with an ActiveX formatter, the following exception will be thrown:

System.InvalidOperationException: Cannot serialize object because its type is not supported.

Server stack trace:
   at System.ServiceModel.Channels.ActiveXSerializer.Serialize(Stream stream, Object obj, Int32& bodyType)
   at System.ServiceModel.Channels.MsmqIntegrationChannelFactory.
Serialize(Object body, MessageProperties properties)
   at System.ServiceModel.Channels.MsmqIntegrationOutputChannel.
OnSend(Message message)
   at System.ServiceModel.Channels.OutputChannel.Send(Message message)
   at System.ServiceModel.OutputChannelBinder.Send(Message message)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, 
Boolean oneway, ProxyOperationRuntime operation, Object[] ins, 
Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCall
Message methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

This issue will be addressed in a future release.

Serializing generic types in x64 machines throws an exception

There is a known issue that causes the serialization of generics to fail on x64 machines. This issue impacts operations that take generics. For example, if you define a service that uses MsmqIntegrationBinding, the definition of a service operation that takes a MsmqMessage<T> will cause this problem on x64 machines. We are working on a fix. Watch the WinFx newsgroups for more information on this issue.

Meanwhile, you can refer to one of the integration samples in the SDK to see how to define service operations without generics.

Existing MSMQ HTTP MAPPING Files will not work after installation of the MSMQ QFE on Windows XP

MSMQ uses different schemas for the HTTP Mapping files in XP and W2K3. These schemas are not compatible with one another. The QFE that is required for Windows Communication Foundation Queues uses the W2K3 schema. This will render any existing HTTP Mapping files on Windows XP unusable.

The workaround is to convert the mapping files to match the W2K3 schema.

TCP Channel Factories IdleTimeout and MaxConnectionLifetime are not exposed in the binding element

For the TCP Channel Factories, IdleTimeout defaults to 2 minutes and MaxConnectionLifetime defaults to 5 minutes. IdleTimeout is not exposed on NamedPipeTransportBindingElement and TcpTransportBindingElement, and MaxConnectionLifetime is not exposed on TcpBindingElement.

These issues will be addressed in a future release.

For this release, to change these values from their defaults, you must tunnel down into your proxy settings as follows:

class MyChannelFactory<T> : ChannelFactory<T>
   protected override void OnInitialize()
         IChannelFactory transportFactory = InnerChannelFactory;
         while (transportFactory.InnerChannelFactory != null)              
            transportFactory  =  transportFactory.InnerChannelFactory;
            ((TcpChannelFactory) transportFactory).IdleTimeout = 

Then call the new MyChannelFactory<T> instead of ChannelFactory<T>.

HTTP digest authentication does not work with default credentials

If you attempt to use HTTP digest authentication in conjunction with default credentials, you will get the following client-side exception at runtime:

System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Digest.' The server authentication schemes are 'Digest ...'

There are two ways to work around this issue:

  • Configure the service and the client to use HTTP NTLM authentication instead of HTTP digest authentication (for example, binding.HttpAuthentication.Scheme = AuthenticationSchemes.Ntlm).
  • Continue to use HTTP digest authentication, but configure the client to use explicit credentials instead of default credentials (for example, use channelFactory.Security.SetSspiSettings(...)).

Svcutil.exe-generated proxy does not replicate session attribute in service contract

When you use svcutil.exe to create a proxy class for an endpoint whose contract uses a session, the generated contract does not have the Session property of ServiceContractAttribute set to True. To work around this issue, edit the generated contract code and set the Session property of ServiceContractAttribute to True.

A service policy with zero claims generates an error in infocard when the user presents a card

In Beta 1, the InfoCard system does not support zero claims in the policy. If a service uses the InfoCard binding (authenticationMethod = "IssuedTokenForCertificate" in the security binding) and specifies zero claims, the InfoCard system appears to accept the policy—all available cards show that they are capable of satisfying this claim request. However, when the user presents the card, InfoCard generates the following error:

"One or more arguments is invalid"

Setup: Manual configuration is required when using Web hosting on Windows on Windows 64 (WOW64)

If you have configured ASP.NET to run on WOW64 (see, you must also copy the web.config file from




InfoCard control panel applet may not launch

The Windows "Digital Identity" control panel applet lets users launch an InfoCard management tool so they can create, delete, or modify their own identities. Under some circumstances, the InfoCard tool may not launch. The most likely cause is that the InfoCard Service was not started.

To launch the tool:

  1. Open Settings in Control Panel.
  2. Start the Digital Identity control panel applet. If the Digital Identity window does not appear:
    1. Open a command prompt.
    2. Run the following command line: "net start "InfoCard Service" "

Windows Communication Foundation COM+ Integration will not work for component methods with VARIANT User-defined types (UDTs) parameters

A server-side serialization exception will be generated when you use Windows Communication Foundation COM+ Integration with methods that accept VARIANTS of type VT_RECORD parameters. This pattern is common when you use types that are defined using the Type construct in Visual Basic 6.0.

The Windows Communication Foundation ComSvcConfig tool cannot configure 32-bit COM+ hosted applications in the Windows on Windows 64 (WOW64) x86-based emulator

When you use the ComSvcConfig tool with the COM+ hosting mode to expose a 32-bit application, an error will occur and the application will not be exposed as a Windows Communication Foundation service.

Teardown of COM+ Components exposed as Windows Communication Foundation Services will be delayed

When the Windows Communication Foundation channel to a COM+ component is closed, the component will remain active for 30 seconds. For transactional components that rely on automatic transaction commit behavior, this will delay the transaction outcome and impact the overall outcome decision if the decision exceeds the transaction time-out period.

To avoid any transaction outcome delay or impact, components should explicitly call SetComplete / SetAbort or use AutoDone methods

Windows Hot Fixes Required on Windows XP and Windows Server 2003 in Order to Use Windows Communication Foundation Queues, WS-AtomicTransaction, and Windows Communication Foundation COM+ Integration Web Service Transaction Functionality.

The Windows Communication Foundation Queues, WS-AtomicTransaction support, and Windows Communication Foundation COM+ Integration Web service transaction functionality will not work on Windows XP and Windows Server 2003 without the installation of the appropriate hot fixes:

Returning faults from one-way operations does not work in this release of Windows Communication Foundation

Faults from one-way operations are not supported in this release of Windows Communication Foundation. When you define a fault (using FaultContractAttribute) on a one-way operation, svcutil.exe will generate incorrect client code. In addition, when a fault is returned from a one-way operation at runtime, the client ignores this fault message.

To work around this issue, change the operation to be request/reply by setting OperationContractAttribute.IsOneWay to False.

Calling dispose on sessionful channel causes session to fault

When you call Dispose on a sessionful channel, the call is taken as an indication that there was a failure and the session will be aborted. This will cause the session to fault on the other side.

To work around this issue, when using sessionful channels you should call Close on the channel when you have finished using it to indicate to the other side that all communication has completed successfully.

Client receives intermittent SecurityNegotiationException when the server is using WsProfileBinding and Web Garden Deployment

Services that are hosted in IIS Web Gardens that make use of the WsProfileBinding may cause clients to fail intermittently when the clients attempt to connect to the service. In these cases, the clients will receive a SecurityNegotiationException while they are establishing the security context for their session.

To work around this issue, disable Web Gardening for the IIS Application Pool that is hosting the service:

  1. Open the IIS Management Console.
  2. Right-click on the Application Pool that hosts the service's application and select Properties
  3. Select the Performance tab.
  4. Set the maximum number of worker processes to 1.

Windows Communication Foundation COM+ Integration will not work for Enterprise Services Components that inherit from an unmanaged interface

A server-side runtime exception is generated when you use Windows Communication Foundation COM+ Integration with an interface that is inherited from a previously registered type library from an unmanaged component.

To work around this issue, redefine the interface and register it in an Enterprise Services assembly.

WS-AT will not work by default when installed on non-English locales

When Windows Communication Foundation is installed on a non-English locale, the WS-AT protocol service hosted in MSDTC will deny access to all transaction beginners or participants. The following exception will be observed when a Windows Communication Foundation application flows a transaction using the WS-AT protocol:

System.Transactions.TransactionManagerCommunicationException: An error occurred communicating with the distributed transaction manager

To resolve this problem:

  1. Change the permission of HKLM\Software\Microsoft\MSDTC\WSAT registry key to grant read access to the "NetworkService" account.
  2. Create a REG_MULTI_SZ registry value called KerberosGlobalAcl under the HKLM\Software\Microsoft\MSDTC\WSAT registry key.
  3. Populate the new multi-string value with the names of groups and user accounts who should be granted access to transactional resources. For example, "NT AUTHORITY\Authenticated Users" represents the Authenticated Users group. "DomainName\UserName" represents a specific user on a domain. "MachineName$" represents a machine name on a domain.
  4. Restart the MSDTC service.

Applications that flow WS-AT transactions between machines will not work by default when in Windows Workgroup Mode

When using the WS-AtomicTransaction protocol to flow transactions between Windows Communication Foundation applications located on machines that are not joined to a Windows domain, client applications (beginners of the transaction who then flow it to another service) will observe the following exception:

System.TimeoutException: The HTTP request-reply has timed out since the transfer timeout for this channel has been exceeded. ---> System.Net.WebException: The operation has timed out

The server application will receive no notification of this failure except for the following exception, which can be seen during debugging:

Microsoft.Transactions.Wsat.Messaging.WsatFaultException: A fault reply message was received

Note that the transaction will be aborted as well.

To resolve this problem:

  • Switch to an all-Windows domain-enabled network topology OR
  • Perform the following steps on each machine that is participating in the transaction:
    1. Create a new user account on the machine (this user does not have to be an Administrator but must have Read access to the HKLM\Software\Microsoft\MSDTC key).
    2. Open up the MSDTC Security Configuration dialog box from within the Component Services MMC snap-in.
    3. Right-click the My Computer node, select Properties, select the MSDTC tab, and click Security Configuration...
    4. Select No Authentication Required for Transaction Manager Communication.
    5. For the DTC Logon Account, use the user account that you created above and enter that account's password in the fields that are provided. (Make sure that each machine is using exactly the same user name and password.)
    6. Restart MSDTC.

WS-Atomic Transaction will not work by default when installed on Windows Vista Beta 1

When a Windows Communication Foundation application attempts to start a transaction using WS-Atomic Transaction on Vista Beta 1, the following exception may be thrown:

System.Transactions.TransactionManagerCommunicationException: An error occurred communicating with the distributed transaction manager.

This exception may occur even after enabling support for WS-AT by using "Xws_reg.exe -wsat+".

To resolve this issue, make the following changes on each machine that is participating in the transaction:

  • Change the value of the registry key: HKLM\Software\Microsoft\MSDTC\Security\NetworkDtcAccessTip from 0 to 1.
  • Restart MSDTC.

Windows Communication Foundation may encounter errors when using port sharing from high-privilege worker processes

When using a Windows Communication Foundation binding that supports TCP port sharing on Windows Vista you may encounter errors if a process that is hosting Windows Communication Foundation services is running as an account other than NETWORK SERVICE. Such errors may appear either as "Access Denied" exceptions or as timeout errors, depending on the message exchange pattern that is used. This is because port sharing by accounts other than NETWORK SERVICE is not supported in Windows Communication Foundation Beta 1.

To work around this condition, disable port sharing at the Windows Communication Foundation binding level and assign a unique TCP port to each service.

Windows Presentation Foundation Known Issues

2D/3D graphics

  • DirectX 9.0c is required on the system for hardware acceleration of 2D and for all rendering of 3D content.
  • Shapes whose bounds are less than 1 pixel high or less than 1 pixel wide, may not render in hardware.


Windows Presentation Foundation (formerly code-named "Avalon") media minimum requirements

  • Windows Media Player 10 must be installed.
  • Hardware acceleration for Video must be turned on to FULL.
  • Sound Drivers must be installed and enabled (to avoid Video from rendering intermittently).
  • Have updated video card drivers installed.
  • Make sure that evr.dll dxva2.dll is installed in c:\windows\system32.

Supported media types

Currently, we can consistently play only the following two file formats:

  • WMV (Codecs: Windows Media Video 8 and higher)
    • Cannot consistently play WMVs encoded using other codecs, such as Windows Media Screen and Windows Media Image.
  • WMA

We may be able to support the following formats; but the playing capabilities are not guaranteed:

  • AVI
  • WAV
  • MPEG
  • JPG, Etc.

The user should expect no error message or response while attempting to play these formats.

This release does not support playback of hi-def, enhanced, or DRM media content.

API limitations

  • Only single video/audio playback is reliable at this time. Although it is possible to play multiple videos and audios at the same time, we can not guarantee the performance or reliability. Attempting to play WMV and WMA in the same Panel also can not be guaranteed in this release.
  • Only the dependency properties on MediaElement can be set through XAML. These are the Framework's properties, Source, and Stretch properties. 2D operations (transforms, clip, opacity, etc) can also be applied to MediaElement.
  • MediaTimeLine and MediaClock cannot be controlled through XAML. These are accessible in code only.
  • One must create a MediaTimeLine and create the MediaClock from the MediaTimeLine. MediaElement has both MediaTimeLine and MediaClock as settable properties. MediaClock is automatically created on setting the MediaTimeLine. The behavior is unknown, if both of these are set.
  • For the Beta 1 version, Seek is disabled for all videos.
  • One can not pause/stop on MediaClocks that have not yet started.
  • Reverse media playback is not supported.
  • MediaTimeLine RepeatBehavior is not supported.
  • A MediaElement in a VisualBrush to render Video is not supported for this release.
  • Animations generally work. There are some scenarios where this breaks the rendering of the Video.
  • Clipping generally works. There are some scenarios where this breaks the rendering position of the video.

Debugging an application using MediaElement

One can expect first-chance Access Violations thrown by the debugger continuously. Disable this and continue the run.

Additional media issues

  • MediaElement can not be set inside a MenuItem.
  • Remote Terminal Services are not supported for Media.
  • Multi-monitor setup is not supported for Media.


  • Applications will not be able to navigate to pages on a server when credentials or proxy settings need to be set in HTTP headers. As a workaround, obtain XAML streams via WebRequest and use the Parser APIs to create pages and navigate to them (or call Parser LoadXml()).

Express applications

  • Adobe CFF fonts are not currently supported in Express applications.
  • Express Applications do not currently have tabbing or access key support.
  • Editing Japanese text is not enabled in this release for Express Applications.
  • Canceling and restarting the download of an Express Application causes an exception. To restart a download, re-navigate to the Express Application.

Speech recognition

  • The classes in System.Speech.Recognition require a speech recognition engine in order to function. Tablet PC contains a speech recognition engine, but Windows XP and Windows 2003 do not.

    As a workaround, install a SAPI 5.1 compliant speech recognition engine provided by Microsoft:

  • The Microsoft SAPI 5.1 SDK includes a recognition engine, and can be downloaded from here.

  • Microsoft Office 2003 contains a speech recognition engine. If you have this product, you can ensure the engine is installed by running Office 2003 Setup with Office Shared Features/Alternative User Input/Speech enabled.

  • Microsoft Office XP also contains a speech recognition engine.

  • When using relative URIs with classes in System.Speech, the exception System.UriFormatException "invalid Uri" may be raised. For example:

    Grammar g = new Grammar ("foo.grxml"); // will throw an exception.

    As a workaround, use a full path:

    *Grammar g = new Grammar (Environment.CurrentDirectory + \\foo.grxml); //*works properly.

    Or, use the overload for Uri, for example:

    Grammar g = new Grammar (new Uri ("grammar.xml", UriKind.Relative));

  • Speech Recognitions that Return Semantics as Text on WindowsXP.

    The System.Speech.SpeechManager class will automatically provide speech recognition for each input control in the application. However, when setting the input scope of a field to a date or number, text will be placed in the field rather than the semantic value of what the user stated vocally. This will be fixed in a future release.

Tablet PC

  • InkCanvas applications may crash or fail to render properly after attempting to scale highlighter strokes. This will be fixed in a future release.
  • All types of TabletCore and TabletFramework assemblies have been moved into PresentationCore and PresentationFramework, respectively. It is no longer necessary to provide a special Mapping PI in order to reference InkCanvas or InkPresenter in XAML.

Toshiba Tablet PCs with NVIDIA software

  • When using an application involving extensive use of menus, your machine may hang.

As a workaround, make the following settings change in the nView Desktop Manager as follows:

  • Switch to Classic View in the Control Panel.
  • Choose the "NVIDIA nView Desktop Manager" applet.
  • Go to the Effects tab.
  • Uncheck the "Make Windows minimize and maximize faster" checkbox.

This will be fixed in a future release.

64-bit platforms

  • There is no support for audio and video on x64 for this release.
  • DirectX 9 hardware acceleration is not available for IA64 systems. 2D content will render without hardware acceleration, but 3D content will not draw. Audio and video will not work.
  • Support for running 32-bit applications under WOW is limited.

Visual Studio Known Issues

  • Debugging Express applications with F5 causes the IE browser window to be in a navigating state.
  • Stopping the debugger for an Express Application terminates PresentationHost.exe but orphans the IE window.
  • The Security Warning dialog box on project creation warns about custom build targets.
  • WinFX SDK Uninstall/Reinstall results in failure to publish "Could not find required file 'setup.bin' in [local folder]\Engine.
  • WinFX SDK Help defaults to online Help that has no XAML specific pages in this release. You must manually select Local Content for WinFX content to work with F5.
  • Cannot set breakpoints while debugging Express Applications in Visual Basic Express and Visual C# Express.

WinFX SDK Help:

If you choose to not install Visual Studio's MSDN documentation, the help system will be configured to use Online content for help. The WinFX SDK help content is installed locally. To make F1 work as appropriate in VS, press F1, choose "Local Content" if possible, otherwise go into Tool Options of the Help Viewer (Microsoft Document Explorer) and change the setting for "Online" to "Try local first..." or "Try local only...".

Note, F1 for WinFX content won't work if you are using Visual C# Express or Visual Basic Express.

C# or Visual Basic Editor:

IntelliSense doesn't work for elements with a Name until you build once. The IntelliSense engine relies on the code in the markup-compiler generated code file to know what type the Name is.

  1. To look at the markup-compiler generated code files, press show all files in the Solution Explorer, and then look inside the obj directory.
  2. Visual Basic Projects—If there is a build error in generated code for Visual Basic, double-clicking the error doesn't open and point to the location in the generated file.
  3. F1 Help to Windows Presentation Foundation help content won't work if you are using Visual C# Express or Visual Basic Express products.

Xml Editor:

  • If you use an x:Code element to place code inside of a XAML file, breakpoints will work. Breakpoints elsewhere in a XAML file won't do anything today. (You can't breakpoint a <Button> element, for example.)

IntelliSense in XAML (inside the XML editor):

The Windows Presentation Foundation and XAML schemas provided with the WinFX SDK are not flawless. Today, many things can compile that the schema may not approve of. We also have things that the schema will approve that will not compile.

  1. The schema will complain about attribute values that are not properly cased. Although type converters are generally not case sensitive, XML schema has limitations. We've chosen to put the matching case with the object model in the schema.


    will compile, but the schema would prefer this form:

  2. ColumnDefinitions and RowDefinitions as direct children inside a Grid will compile and execute fine, but we'd prefer if you use the following syntax today:

             <ColumnDefinition ... />
             <RowDefinition ... />

Unfortunately, the schema in this release will complain about both ways. In the future, it will not complain if you use the preferred syntax.

  1. Today, Storyboards are only allowed on the root element. The Windows Presentation Foundation schema will allow that. It will also allow Storyboards inside of any Panel, regardless of the location in the hierarchy. This will not run correctly.
  2. Some elements will complain with the "content model is empty" warning. Many times, however, the compiler will be able to handle it.
  3. If you build a custom element (often a custom control), IntelliSense in the XML editor will not work unless you hand build a .xsd for that control and put that .xsd in %programfiles%\microsoft visual studio 8\xml\schemas\.
  4. Several Transform propertytags appear to allow multiple children transforms. However, there can only be one root Transform. If you would like several, use TransformGroup as the root transform.

Project Templates Known Issues

  • All Visual Basic Projects—All Visual Basic Project templates will initially display an error "'Sub Main' was not found in PROJECTNAME". Once you build the project, the error will go away.