从 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
如果问题仍然存在,请随时告诉我。
我在调试时在 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
如果问题仍然存在,请随时告诉我。