C#怎么连接Webservice服务?
如题,我要做一个基于sql数据库访问的C#应用程序,请教别人之后我知道需要把数据库服务部署到网站上,别人才可以远程访问我的数据库。然后我就根据网上的方法部署一个webservice到网站上,但是C#程序引用时还是不行。初学C#,很多都还不懂,所以不知道是哪里出了问题,希望各位大佬帮忙看看,不胜感激
这是webservice1.asmx.cs里的内容
namespace Webservice
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "localhost")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
DBOperation dbOperation = new DBOperation();
}
}
这是类DBOperation里的内容:
public class DBOperation : IDisposable
{
public static SqlConnection sqlCon; //用于连接数据库 //将下面的引号之间的内容换成上面记录下的属性中的连接字符串
private String ConServerStr = @"Data Source=DAWN\MSSQLSERVER2;Initial Catalog=KYQuery;Persist Security Info=True;User ID=sa;Password=123456"; //默认构造函数
public DBOperation()
{
if (sqlCon == null)
{
sqlCon = new SqlConnection();
sqlCon.ConnectionString = ConServerStr;
sqlCon.Open();
}
}
//关闭/销毁函数,相当于Close()
public void Dispose()
{
if (sqlCon != null)
{
sqlCon.Close();
sqlCon = null;
}
}
}
这是C#程序里引用webservice的内容:
ServiceReference1.WebService1SoapClient ws = new ServiceReference1.WebService1SoapClient();
SqlConnection sqlcn = new SqlConnection();
string connectionString = @"Data Source = DAWN\MSSQLSERVER2; Initial Catalog = KYQuery;User ID = sa; Password = 123456";
sqlcn.ConnectionString = connectionString;
SqlCommand sqlcm = new SqlCommand();
sqlcm.Connection = sqlcn;
sqlcm.CommandType = CommandType.Text;
sqlcm.CommandText = "select * from KYQuery";
sqlcn.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = sqlcm;
DataSet ds = new DataSet();
adapter.Fill(ds);
sqlcm.Dispose();
if (sqlcn != null)
{
sqlcn.Dispose();
sqlcn.Close();
}
DataTable dt = ds.Tables[0];
dataGridView1.DataSource = dt;
namespace Webservice
{
///
/// WebService1 的摘要说明
///
[WebService(Namespace = "localhost")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public DataTable Select()
{
DBOperation dbOperation = new DBOperation();
SqlConnection sqlcn = new SqlConnection();
string connectionString = @"Data Source = DAWN\MSSQLSERVER2; Initial Catalog = KYQuery;User ID = sa; Password = 123456";
sqlcn.ConnectionString = connectionString;
SqlCommand sqlcm = new SqlCommand();
sqlcm.Connection = sqlcn;
sqlcm.CommandType = CommandType.Text;
sqlcm.CommandText = "select * from KYQuery";
sqlcn.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = sqlcm;
DataSet ds = new DataSet();
adapter.Fill(ds);
sqlcm.Dispose();
if (sqlcn != null)
{
sqlcn.Dispose();
sqlcn.Close();
}
return ds.Tables[0];//此处可序列化成json 返回string
}
}
}
ServiceReference1.WebService1SoapClient ws = new ServiceReference1.WebService1SoapClient();
dataGridView1.DataSource = ws.Select();
你完全没有理解到WebService是什么。
首先你要有一个拥有公网ip的web服务器,如果没有,你可以去用华为云、阿里云、都有免费试用。你需要windows服务器,不要linux的
装好数据库、.net框架,iis,配置好,把你的程序传上去。
假设你的服务器是 1.2.3.4
部署上去,那么你的服务地址就是 http://1.2.3.4/webservice1.asmx
然后编写一个客户端调用程序,新建一个C#项目,在vs的项目菜单上找到添加web引用,地址输入上面的那个
然后就可以像调用本地代码那样调用HelloWorld了
直接项目右击 添加webservice引用,地址贴上去,webconfig会自动添加相关配置的