Click here to Skip to main content
12,949,601 members (63,090 online)
Rate this:
Please Sign up or sign in to vote.
See more:
I have created a WCFservice.find the below interface service class

    public interface IService
        DataSet GetStandards();

    public class Service : IService 
        public DataSet GetStandards()
            Standard standard = new Standard();
            DataSet objResponseBE;
            objResponseBE = standard.GetStandards();
            return objResponseBE;

I have also created proxy class for that wcf service
Though that proxy class i am calling business layer and through business layer called DAL
in business layer GetStandard function which return object type in the DAL layer class function i am getting dataset which i am passing it to business layer function GetStandard where return type is object.When comming to this level i am not getting error.But when wcf service gets the response from business layer i am getting following error

There was an error while trying to serialize parameter InnerException message was <br />
'Type 'System.Data.DataSet' with data contract name 'DataSet:' is not expected.

Consider using a DataContractResolver or add any types not known statically to the list of known types - for example,
by using the KnownTypeAttribute attribute
or by adding them to the list of known types passed to DataContractSerializer.'.

but when i am passing datset in all layer funtion i am not getting error
But i want to pass object because always i am not getting dataset if i am getting error then how can i pass that.So for that i have used return type as object
please help me into this...
Posted 13-Jan-13 6:23am
Updated 13-Jan-13 9:46am
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

I would suggest that you don't transfer a DataSet but rather return a typed list.
List<StandardRecord> GetStandards();

There are two benefits:

  1. Efficiency - DataSet is a very complex type, and reconstructing it based on deserialization using refelction is costly

  2. Makes the intent behind the operation clearer

But if you really want to do this have a look at: Optimizing Serialization in .NET[^]

Best regards
Espen Harlinn
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Follow the instructions as given by the error: [...] using the KnownTypeAttribute[^]attribute [...].

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Print Answers RSS
Top Experts
Last 24hrsThis month
OriginalGriff 5,489
CHill60 3,330
Maciej Los 2,913
Jochen Arndt 1,935
ppolymorphe 1,820

Advertise | Privacy | Mobile
Web02 | 2.8.170524.1 | Last Updated 13 Jan 2013
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100