asp.net Web服务与数据库交互

时间:2017-07-20 14:18:49

标签: c# jquery asp.net

对不起我是这种方法的新手。 我想使用.net c#在我的sql server上编写各种Web服务器。 对我的数据库执行各种操作,例如更新客户,删除客户,选择客户等。 我正在编写一个客户端Web应用程序(最终部署在移动设备上),它将向这些Web服务发送和检索数据。 我不确定允许我从我的客户端执行此操作以允许身份验证并且相当安全的方法。 到目前为止,我在考虑Jquery AJAX?

2 个答案:

答案 0 :(得分:0)

Ajax允许您在页面内的服务器和客户端之间交换数据,而无需重新加载。它使用HTTP消息发送和接收数据。

设置REST服务并将jQuery添加到HTML页面。此时,您有一个沟通渠道。现在你必须考虑安全模型。

您可能要求客户在每个请求中发送用户名+密码或身份验证令牌。您还可以将这些凭据放在HTTP消息(cookie,标题,正文)中的任何位置。

如果这是您第一次使用ASP.NET,请尝试使用标准表单身份验证(它将身份验证令牌存储在ASPX_AUTH cookie中)或任何.NET内置身份验证模型。

请参阅以下文章查看示例:

Security in ASP.NET

Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2

答案 1 :(得分:0)

首先创建ASMX文件

在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;
    }

在客户端

     $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "Query.asmx/LoadNat",
            data: "{}",
            dataType: "json",
            success: function (Result) {
                Result = Result.d;

                $.each(Result, function (key, value) {
var id=value.ID;
var Name=value.Name;

                });

            },
            error: function (Result) {

            }
        });

注意在客户端,你得到的对象(数组)不是json

用于保存(从客户端获取值到服务器)

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 }
        }
    }

对于安全性,您不能以纯文本形式发送用户名和密码,它将在浏览器流量中显示 您应该将其加密并在服务器上解密