我的界面为:
[ServiceContract]
interface IDataRetrieve
{
[OperationContract]
SqlConnection CreateSQLConnection(string connectionString);
//DataSet GetSQLData(SqlConnection sqlConnection);
}
和实施方式:
[DataContract]
public class DataRetriever:IDataRetrieve
{
[OperationBehavior]
public SqlConnection CreateSQLConnection(string connectionString)
{
SqlConnection connection = new SqlConnection(connectionString);
return connection;
}
}
现在,在尝试访问该服务时,出现无法访问的错误。
当我将方法的返回类型更改为void时,服务开始工作。我做错了什么?
答案 0 :(得分:3)
SqlConnection不可序列化,因此您无法从WCF服务方法返回它。它也没有任何意义,因为你无法使用此连接从另一台机器连接到sql server,你需要创建一个新的。如果传递“连接”是必要的,您可以传递连接字符串和创建连接所需的其他设置。