EDRA Version 1.1 Known Issues


If you are using a link to the ShadowfaxWiki, it has been updated to the following: http://channel9.msdn.com/wiki/default.aspx/Channel9.EDRAWiki (I edited ShadowfaxWiki to add an automatic redirect -- JonathanHardwick)

This documents common problems users have experienced when installing and using the Enterprise Development Application Framework (EDAF). In addition, general known issues with the EDAF at the time of release are included. The Security Considerations section within the documentation includes more known issues relating to security.

Additional support (and possibly fixes) can be obtained on the Enterprise Development Reference Architecture (EDRA) community workspace at http://go.microsoft.com/fwlink/?LinkId=31528


Common Problem: The Exception Shielding function helps ensure exceptions do not include content, such as, connection strings, which could result in a security breach. This might give the impression that exception information from a service is not very useful. This is by design.
Resolution: When troubleshooting, look in the Event Log for additional exception information as this is where the detailed information is written. You can also turn off exception shielding in the configuration file, but this should only be done in development environments. See the "Transports" section in Chapter 12, "Configuration Reference" for details.


Common Problem: Windows service that hosts remoting and message queuing transports does not start.
Possible Solution: Windows service has a dependency on Message Queuing. Make sure Message Queuing is installed and running.


Common Problem: If the DuplicateHandling handler encounters an exception in its after section, it will not cache the message results — even though the business action might have succeeded. This could lead to the same business action being executed twice.
Possible Solution: Use the Duplicate Handling handler with the Transaction handler.


Known Issue: White spaces in message data are not preserved. Input fields that contain only spaces will be trimmed.
Resolution: Design your system so that trimming whitespace is acceptable.


Common Problem: The nesting of stacked around handlers must be appropriate. An example of incorrect nesting is shown below.
<before>
		            <handler handlerName=”Transaction”/>
		            <handler [handlerName=”ExecutionTimeout”/>]
	
</before>
<after>
		            <handler handlerName=”Transaction”/>
		            <handler [handlerName=”ExecutionTimeout”/>]
	
</after>

Resolution: Fix the nesting of the stacked around handlers in the configuration as shown below:
<before>
		            <handler handlerName=”Transaction”/>
		            <handler [handlerName=”ExecutionTimeout”/>]
	
</before>
<after>
		            <handler [handlerName=”ExecutionTimeout”/>]
		            <handler handlerName=”Transaction”/>
	
</after>



Common Problem: Setup scripts fail if SQL Server is not set to mixed security mode.
Resolution: Setup SQL server for mixed security mode.


Common Problem: When using the Authentication Infrastructure handler, Digest Authentication does not work with Windows 2000. It works with Windows 2003 and Windows XP.
Possible Solution: This appears to be a configuration issue with IIS and Active Directory on Windows 2000 and not an issue with EDRA.


Known Issue: If you are using the FAT file system, you may get the following error when you are creating a new application running the CreateNewTemplate.wsf script.

Copying files...
Copying of files completed.

C:\Program Files\Microsoft EDRA\CS\ReferenceArchitecture\Template>rem set permis
sions on given directory so that group "everyone" has "read" permission

C:\Program Files\Microsoft EDRA\CS\ReferenceArchitecture\Template>rem also allow
		 "administrators" "full" permissions
	

C:\Program Files\Microsoft EDRA\CS\ReferenceArchitecture\Template>rem use "E", "
T", "C" to make change additive, recursively, and to ignore "access denied"

C:\Program Files\Microsoft EDRA\CS\ReferenceArchitecture\Template>cacls "C:\Deve
lopment\Bank\BusinessLayer\Services\TransportInterfaces\WebServiceInterface\" /g
		 everyone:R administrators:F /e /t /c
	

The Cacls command can be run only on disk drives that use the NTFS file system. Error: (76) - Source: Microsoft Vbscript runtime error - Description: Path not found
Script failed. Press ENTER to close
Resolution: The file system on your hard drive needs to be NTFS to install the EDAF.


Known Issue: If you install EIF before installing Visual Studio.NET 2003 then Visual Studio does not see the needed references to EIF and thus installation of the EDRA fails due to the broken references.
Resolution: 1) To preempt, always install EIF after installing Visual Studio. 2) To repair: Uninstall a non-working installation of EIF, verify that Visual Studio has been installed on the machine, then reinstall EIF.


Common Problem: If you are attempting to flow Windows credentials through more than one server and you are using the DCOM, Message Queuing, or Web service dispatching adapter, you may have problems.
Resolution: The framework provides four prebuilt targets that support predefined transports: Inproc, DCOM, Message Queuing, and Web service. You can flow Windows credentials through more than one server by specifying the <authenticationMethod> for the DCOM, and Web service targets. The authentication method options for Web service are IdentityAccess, BasicAccess, and IntegratedAccess. For DCOM, only IdentityAccess and IntegratedAccess is available. See "Targets" in Chapter 12, "Configuration Reference" for more information.


Known Issue: When using a dispatching transport that does not support flowing transactions (such as Web service or Message Queuing), if the service implementation succeeds but a failure occurs in the <after> processing of your Service Interface pipeline, it will cause an error to be reported to the client but the business action database changes will not be rolled back.
Resolution: Switch to the DCOM or Inproc dispatching transports which support flowing transactions so the service interface and service implementation can all run under a single transaction. That way a failure anywhere will be able to roll back all database activity. Another possible option is to use the DuplicateMessage handler in your service implementation so that if the client re-tries the message it will prevent your business action from processing the message again, which might create duplicate database records.


Known Issue: When using the Message Queuing interface transport, a message might get automatically re-tried if a power failure occurred while a message is being processed or if the failed message queue cannot be found.
If this happens during the after processing of your Service Interface pipeline and you are using a dispatching transport that does not support flowing transactions (such as Web service or Message Queuing), then your original business action will not get rolled back yet the message will get returned to the Service Interface Request queue — resulting in an automatic retry that will potentially cause the business action to be executed twice, potentially creating duplicate database records.
Resolution: Switch to the DCOM or Inproc dispatching transports which support flowing transactions so the service interface and service implementation can all run under a single transaction. That way a failure anywhere will be able to roll back all database activity. Another possible option is to use the DuplicateMessage handler in your service implementation so that the automatic retry will not cause your business action to be executed twice.


Common Problem: For a multi-tier MSMQ-MSMQ setup (including a remote database), if you have Network Transactions switched off, you will receive the following error: "Transaction Manager has disabled its support for network transactions." This is because the Message Queuing dispatcher uses COM+ transactions which will try to create a distributed transaction around any remote database.
Resolution: Switch Network Transactions on using the Component Services management console.


Common Problem: If you are deploying the EDAF tiers across multiple machines, you will need to run the Microsoft Windows Installer file on the different machines. Each Windows Installer file will install the code with its own public key, unless the user specifies a SNK file used by all machines. This results in machines with assemblies with different public key tokens. When execution moves from one machine to another, due to the public key differences it will cause an exception.
Resolution: You should make sure to use the same SNK file for all machines during multi-tier deployment.


Known Issue: If you are deploying the EDAF tiers across multiple machines and generated your own DCOM proxy for the DCOM dispatching transport, then if you want to reinstall the EDAF on the service interface machine, when you run setup.wsf it will fail with the following message: "Microsoft.ReferenceArchitecture.DComDispatchingAdapterInstaller.dll file or one of its dependencies not found."
Resolution: Manually delete the DCOM proxy before attempting to reinstall the EDAF. Add the DCOM proxy after you install the EDAF.


Known Issue: There is configuration validation code in the EDAF that checks whether the Message Queuing dispatching transport request queue in the configuration file is the same as the Message Queuing target request queue. However, when the EDAF tiers are deployed on multiple machines, the target will be running on a different machine from the dispatching transport, so each machine will only need to read either the target or the transport configuration. Because of the configuration validation code, you will still need to make sure to specify both the target and transport configuration on both machines, and make sure the values match on that machine, to ensure the validation passes.
Resolution: Include the configuration information for both the target and transport (even if it is unnecessary) to ensure it can find and match the values.


Known Issue: If you are using the Inproc dispatching transport, and have the ClientTrace handler in both the Service Interface and Service Implementation pipelines, then the ClientTrace handler throws an exception.
Resolution: Put the ClientTrace handler only in the Service Interface pipeline, it is unnecessary to include it in both when using the Inproc dispatching transport.


Known Issue: Sending or returning a message that contains a dataset in some situations will cause the dataset to be empty.
Resolution: This is a bug in the XmlNodeReader class which the XmlSerializerHelper class uses in one of its Deserialize overloads. This workaround has a performance impact, but you can make the following change to the second Deserialize overload in the XmlSerializerHelper class to solve the problem:
public static object Deserialize( XmlNode serializedValue, Type type )
{
		   return [XmlSerializerHelper.Deserialize(] [serializedValue.OuterXml,] type );
	
}


Known Issue: The Message Queuing interface adapter does not support enabling or disabling of exception shielding.
Resolution: Check the event log to see error messages.


Known Issue: The Remoting interface adapter does not work correctly when enabling exception shielding.
Resolution: Check the event log to see error messages.



Wizard Known Issues

Wizard Known Issue: If an already existing Web Folder name is specified using the same casing that was used when creating it for the first time, then the previous Web Folder location will be overwritten with the new one without a warning. This will cause any Web projects expecting the previous Web Folder name to fail to load.
Resolution: If you don’t want to overwrite an existing Web Folder check for its existence before running the wizard.


Wizard Known Issue: If an already existing Web Folder name is specified using the same name but a different casing than the one used at creation time, the setup script will fail.
Resolution: Use a completely new name for the Web Folder or use the same name with the same casing.


Wizard Known Issue: For the Expose Service Action on a Transport wizard, the black box template does not support the Remoting Interface transport. It supports Web service, Inproc, or the Message Queue Interface transports.
Resolution: To expose a service action on a transport using the Remoting Interface transport, create your solution using the white box template.


Additional support (and possibly fixes) can be obtained on the EDRA community workspace at http://go.microsoft.com/fwlink/?LinkId=31528

Back To: EDRAWiki
Microsoft Communities