各位大侠,我写了一个WebService,但是在客户端页面调用时出错,错误信息如下:
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: ConnectionString 属性尚未初始化。 at System.Data.SqlClient.SqlConnection.Open() at WebServiceLottery.Service1.HelloWorld() in c:\inetpub\wwwroot\webservicelottery\wslottery.asmx.cs:line 150 --- 内部异常堆栈跟踪的结尾 ---
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: ConnectionString 属性尚未初始化。 at System.Data.SqlClient.SqlConnection.Open() at WebServiceLottery.Service1.HelloWorld() in c:\inetpub\wwwroot\webservicelottery\wslottery.asmx.cs:line 150 --- 内部异常堆栈跟踪的结尾 ---
源错误:
行 35: [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
行 36: public string HelloWorld() {
行 37: object[] results = this.Invoke("HelloWorld", new object[0]);
行 38: return ((string)(results[0]));
行 39: }
代码段:
WebService的方法如下:
[WebMethod]
public DataSet HelloWorld()
{
//创建数据库连接和命令的对象
sqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
sqlDataAdapter1 = new SqlDataAdapter("SELECT * FROM tblLottery", sqlConnection1);
//指明Sql命令的操作类型是一般的SQL语句
sqlDataAdapter1.SelectCommand.CommandType = CommandType.Text;
//打开数据库连接
sqlConnection1.Open();
//创建数据集
DataSet result = new DataSet();
//往数据集里面填充数据
sqlDataAdapter1.Fill(result, "tblLottery");
//关闭数据库连接
sqlConnection1.Close();
//返回DataSet的结果
return result;
}
在客户端页面调用代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
protected localhost.Service1 wslottery = null;
wslottery = new localhost.Service1();
DataGrid1.DataSource=wslottery.HelloWorld();
DataGrid1.DataBind();
}
请问为什么出现这个错误,如何解决?万分感谢!!
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: ConnectionString 属性尚未初始化。 at System.Data.SqlClient.SqlConnection.Open() at WebServiceLottery.Service1.HelloWorld() in c:\inetpub\wwwroot\webservicelottery\wslottery.asmx.cs:line 150 --- 内部异常堆栈跟踪的结尾 ---
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: ConnectionString 属性尚未初始化。 at System.Data.SqlClient.SqlConnection.Open() at WebServiceLottery.Service1.HelloWorld() in c:\inetpub\wwwroot\webservicelottery\wslottery.asmx.cs:line 150 --- 内部异常堆栈跟踪的结尾 ---
源错误:
行 35: [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
行 36: public string HelloWorld() {
行 37: object[] results = this.Invoke("HelloWorld", new object[0]);
行 38: return ((string)(results[0]));
行 39: }
代码段:
WebService的方法如下:
[WebMethod]
public DataSet HelloWorld()
{
//创建数据库连接和命令的对象
sqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
sqlDataAdapter1 = new SqlDataAdapter("SELECT * FROM tblLottery", sqlConnection1);
//指明Sql命令的操作类型是一般的SQL语句
sqlDataAdapter1.SelectCommand.CommandType = CommandType.Text;
//打开数据库连接
sqlConnection1.Open();
//创建数据集
DataSet result = new DataSet();
//往数据集里面填充数据
sqlDataAdapter1.Fill(result, "tblLottery");
//关闭数据库连接
sqlConnection1.Close();
//返回DataSet的结果
return result;
}
在客户端页面调用代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
protected localhost.Service1 wslottery = null;
wslottery = new localhost.Service1();
DataGrid1.DataSource=wslottery.HelloWorld();
DataGrid1.DataBind();
}
请问为什么出现这个错误,如何解决?万分感谢!!
改了一下代码,下面的代码没有调试:
public DataSet HelloWorld()
{
//创建数据库连接和命令的对象
SqlConnection sqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM tblLottery",sqlConnection1); sqlConnection1.Open();
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlCmd);
DataSet result = new DataSet();
//往数据集里面填充数据
sqlDataAdapter1.Fill(result, "tblLottery");
//关闭数据库连接
sqlConnection1.Close();
//返回DataSet的结果
return result;
}