C# asp.net web服务与数据库交互

C# asp.net web服务与数据库交互,c#,jquery,asp.net,C#,Jquery,Asp.net,对不起,我是新来的。 我想在我的sql server上使用.NETC编写各种web服务器。 对我的数据库执行各种操作,例如更新客户、删除客户、选择客户等。。 我正在编写一个客户端web应用程序,最终部署到移动设备上,向这些web服务发送和检索数据。 我不确定哪些方法允许我从我的客户端执行此操作,这些方法允许身份验证,并且相当安全。 到目前为止,我正在考虑Jquery AJAX?AJAX将允许您在页面内的服务器和客户端之间交换数据,而无需重新加载。它使用HTTP消息发送和接收数据 设置REST服务

对不起,我是新来的。 我想在我的sql server上使用.NETC编写各种web服务器。 对我的数据库执行各种操作,例如更新客户、删除客户、选择客户等。。 我正在编写一个客户端web应用程序,最终部署到移动设备上,向这些web服务发送和检索数据。 我不确定哪些方法允许我从我的客户端执行此操作,这些方法允许身份验证,并且相当安全。
到目前为止,我正在考虑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服务的新手,为什么要指向不推荐使用的堆栈???