从 WCF 应用程序检索数据集

Retrive DataSet from WCF application

我在调试时在 WCF 测试客户端中得到了结果,但不确定如何在浏览器中获取数据集值。我是第一次在 wcf 项目上工作

IService.cs

[ServiceContract]
    public interface IService
    {
        [OperationContract]
        DataSet Permit(getPermit name);
    }

    [DataContract]
    public class getPermit{

        string name = string.Empty;

        [DataMember]
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }

Service.SVC

public System.Data.DataSet Permit(getPermit name)
        {
            DataSet ds = new DataSet();
            string connection = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString.ToString();
            string cmdText = "sql Query";
            SqlConnection con = new SqlConnection(connection);
            con.Open();
            SqlCommand cmd = new SqlCommand(cmdText, con);     
            cmd.ExecuteNonQuery();
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                da.Fill(ds);
                return ds;
            }
        }

部署到 IIS 后,我将参数作为查询字符串传递后没有得到任何结果

我想,我需要在配置文件中提及一些绑定才能使其正常工作。 不确定如何配置

任何建议

起初,问题与数据集无关。连接数据库失败是问题所在。我建议您检查连接字符串是否使用集成安全性来建立连接。当我们将项目部署到IIS时,Application pool identity会替换掉运行 VS的identity,从而导致数据库连接失效。

第二,默认DataSet不指定名称也能正常返回,这一点与DataTable类型不同。
Passing an inherited "Data Contract" through WCF call?
最后,除了返回的数据过大外,还有none绑定配置的问题。正如 Akshay 提到的,返回数据集不是传输数据的最佳实践,我们最好考虑使用 List 并使用 DataContract 自定义用户 class。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data-contracts
如果问题仍然存在,请随时告诉我。