C# asp.net web服务与数据库交互
对不起,我是新来的。 我想在我的sql server上使用.NETC编写各种web服务器。 对我的数据库执行各种操作,例如更新客户、删除客户、选择客户等。。 我正在编写一个客户端web应用程序,最终部署到移动设备上,向这些web服务发送和检索数据。 我不确定哪些方法允许我从我的客户端执行此操作,这些方法允许身份验证,并且相当安全。C# asp.net web服务与数据库交互,c#,jquery,asp.net,C#,Jquery,Asp.net,对不起,我是新来的。 我想在我的sql server上使用.NETC编写各种web服务器。 对我的数据库执行各种操作,例如更新客户、删除客户、选择客户等。。 我正在编写一个客户端web应用程序,最终部署到移动设备上,向这些web服务发送和检索数据。 我不确定哪些方法允许我从我的客户端执行此操作,这些方法允许身份验证,并且相当安全。 到目前为止,我正在考虑Jquery AJAX?AJAX将允许您在页面内的服务器和客户端之间交换数据,而无需重新加载。它使用HTTP消息发送和接收数据 设置REST服务
到目前为止,我正在考虑Jquery AJAX?AJAX将允许您在页面内的服务器和客户端之间交换数据,而无需重新加载。它使用HTTP消息发送和接收数据 设置REST服务并将jQuery添加到HTML页面。在这一点上,你有一个沟通渠道。现在,您必须考虑安全模型 您可以要求客户端在每个请求中发送用户名+密码或身份验证令牌。您还可以将这些凭据放置在HTTP消息cookie、标头和正文中的任何位置 如果这是您第一次使用ASP.NET,请尝试使用标准表单身份验证—它将身份验证令牌存储在ASPX_AUTH cookie或任何.NET内置身份验证模型中 请参阅下面的文章以查看示例: 首先创建ASMX文件
public class NationalityInfo
{
public int ID { get; set; }
public string Name { get; set; }// any Other
}
[WebMethod]
[ScriptMethod]
public List<NationalityInfo> LoadNat()
{
string Conn = System.Configuration.ConfigurationManager.ConnectionStrings["GPS_TrackingConnectionString"].ConnectionString;
List<NationalityInfo> NatInformation = new List<NationalityInfo>();
DataSet ds;
using (SqlConnection con = new SqlConnection(Conn))
{
using (SqlCommand cmd = new SqlCommand("select * from Nationality", con))
{
con.Open();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
ds = new DataSet();
da.Fill(ds);
}
}
}
try
{
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
NatInformation.Add(new NationalityInfo()
{
ID = Convert.ToInt32(dr["Id"]),
Name = dr["Name"].ToString()
});
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return NatInformation;
}
在ASMX文件内部或外部创建第二个类
public class NationalityInfo
{
public int ID { get; set; }
public string Name { get; set; }// any Other
}
[WebMethod]
[ScriptMethod]
public List<NationalityInfo> LoadNat()
{
string Conn = System.Configuration.ConfigurationManager.ConnectionStrings["GPS_TrackingConnectionString"].ConnectionString;
List<NationalityInfo> NatInformation = new List<NationalityInfo>();
DataSet ds;
using (SqlConnection con = new SqlConnection(Conn))
{
using (SqlCommand cmd = new SqlCommand("select * from Nationality", con))
{
con.Open();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
ds = new DataSet();
da.Fill(ds);
}
}
}
try
{
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
NatInformation.Add(new NationalityInfo()
{
ID = Convert.ToInt32(dr["Id"]),
Name = dr["Name"].ToString()
});
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return NatInformation;
}
注意,在客户端,您得到的是对象数组,而不是json
用于将Get值从客户端保存到服务器
function SaveNat() {
var Nat = {};
Nat.ID = txtID.value;
Nat.Name = txtName.value;
var NatVar = JSON.stringify(Nat);
$.ajax({
type: "POST",
url: "Query.asmx/SaveNat",
data: '{Nat: ' + NatVar + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert('Saved');
}
});
}
服务器保存功能
[WebMethod(EnableSession = true)]
[ScriptMethod]
public void SaveNat(NationalityInfo Nat)
{
string Conn = ""// Your Connection
using (SqlConnection con = new SqlConnection(Conn))
{
using (SqlCommand cmd = new SqlCommand())
{
//Save }
}
}
至于安全性,您不能发送纯文本的用户名和密码,它将在浏览器trafic中可见
您应该在您的服务器上加密并解密它我第一次使用的web服务。我在asp.NETMVC中做了很多工作,所以开发模式很熟悉,很好。这个链接应该可以帮助你开始。天啊,这是广泛的@Rahul+1 HAHAPL请不要使用不推荐使用的框架/堆栈-直接跳到Web API/MVC。或者Web API/Angular客户端框架如果OP是开发人员和Web服务的新手,为什么要指向不推荐使用的堆栈???