I've developed a distributed app in C#. The various components of the application are as follows:
A SQL Server database.
Data Access Layer - Hosted in COM+ as Library application.
Business Logic Layer - Hosted in COM+ as Server application.
User Interface (Windows-based).
Types - Exposes various typed DataSet objects used by DAL, BLL, and UI.
ServerHost - A Console app that exposes the BLL objects via remoting.
The application is hosted on a machine running Windows XP SP2. The DAL and BLL are both hosted in COM+ on the same server that hosts the SQL Server database. Both of these projects and the UI project reference the Types library that, among other things, has strongly typed DataSet objects that are used by the other three (DAL, BLL, and UI) projects. The DAL and BLL (hosted in COM+) are made available to remote clients via .NET Remoting. The issue is that data is serialized successfully from DAL to BLL to UI. However, it doesn't work the other way around. When I send updated data back to the server, it fails. The exception thrown is SerializationException. The error message reads "Because of security restrictions, the type CustomerDataSet cannot be accessed." InnerException of the exception thrown (SerializationException) is SecurityException and its error message reads "Request failed."
I've no idea if the same DataSet is serialized from server to the client successfully, why isn't it getting serialized the other way around? Any ideas?
Note: I've created a striped down version of the same project based on the Northwind SQL Server database. This project follows the same architecture (used in the original application) around the Customer table of the Northwind database. So, if any one needs the sample application that is capable of producing the errors just described, please send me an email at
ehsanullahjan@gmail.com.
Your help is greatly appreciated.
ejan