客户端调用wcf服务时返回混合数据

时间:2015-06-17 04:32:42

标签: c# wcf oop datatable static

我有大约100个客户调用的wcf服务。 我正在使用消息通道进行此通信。 在我从客户端获得带有数据表和字符串的参数的请求后,我调用静态方法来处理这些数据。 我所做的处理是将从客户端接收的数据表与内存缓存数据表连接起来。 如下所示,DTReplyData是数据表。我使用相同的数据表进行输入和输出,即我的数据合约只有一个数据表。

public System.ServiceModel.Channels.Message GetData(System.ServiceModel.Channels.Message messageIn)
    {
        ExecutionOutput requestOperation = messageIn.GetBody<ExecutionOutput>();
        DataTable data = Cache.GetData(requestOperation.OperationName,requestOperation.DTReplyData);


    }    
public static DataTable GetData(string operationName,DataTable inputparameters)
    {
        try
        {

            return filterClientData(operationName, inputparameters);
        }
        catch (Exception ex)
        {                               

            return new DataTable();
        }
    }

    public static DataTable filterClientData(string operationName,DataTable inputparameters)
    {
        DataTable permanentcacheData = new DataTable();
        permanentcacheData = (DataTable)permanentCache[operationName];//this gets data from in memory cache

        if (permanentcacheData != null)
        {

            string[] columnNames = (from dc in inputparameters.Columns.Cast<DataColumn>()
                                    select dc.ColumnName).ToArray();
//Helper method invoked to join tables
                DataTableHelper dt = new DataTableHelper();

            DataTable filteredData = dt.JoinTwoDataTablesOnOneColumn(inputparameters, permanentcacheData, columnNames[0], DataTableHelper.JoinType.Inner);



            filteredData.TableName = "FilteredData";

            return filteredData;
        }
        else
        {

            return permanentcacheData;
        }
    }

我面临的问题是,当连接发生时,即使我创建新对象,数据表助手已经有一些数据,并且数据混合发生,这会导致错误。这里有任何建议是因为使用了静态方法吗?或者因为我我使用相同的datamember作为结果和请求。理所当然这不会产生我想的问题。

1 个答案:

答案 0 :(得分:0)

最有可能使用静态方法。我的WCF服务混合数据时遇到了类似的问题,并且通过从我的方法中删除静态来修复它。