将服务器端c#转换为ASP.. NET Web API

Converting Serverside C# to ASP.NET Web API

本文关键字:NET Web API ASP 服务器端 转换      更新时间:2023-09-26

在发布了如何将服务器端信息获取到JS(在客户端)链接之后,我被建议将我的服务器端逻辑创建到Web Api中,以便通过JQuery AJAX调用通过HTTP公开数据。在查阅了大量的文档,甚至微软的在线教程系列之后,我发现几乎没有什么好的指导。以前,我在js脚本中通过内联c#调用调用我的服务器端方法,但了解到由于c#是预编译的,它只是简单地"填充"c#函数返回的值。

只是为了参考我如何不正确地调用我的c#方法。

这是我的前端:Login.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>PAM testing</title>
    <link rel="stylesheet" type="text/css" href="Styles/Site.css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="Scripts/JScript.js"></script>
</head>
<body>
    <div id="banner">PAM Testing Tool</div>
    <div id="content">
        <form id="form1" runat="server" style="margin-left: 25%; text-align: center; height: 41px; width: 292px;">
            <%--Login ASP Object--%>
            <asp:Login ID="Login1" runat="server" onclick="process()"></asp:Login>
            <asp:ValidationSummary ID="ValidationSummary1" runat="server" style="text-align: center" ValidationGroup="Login1" />
        </form>
        <%--TEST AREA--%>
        <script type="text/javascript">
            function logCookie(){
                document.cookie = "user=" + document.getElementById("Login1_UserName").value;// this is the id of username input field once displayed in the browser
            }
            function testFunction() {
                <%=Login1_Authenticate() %>;
            }
            function process(){
                logCookie();
                testFunction();
            }
        </script>
    </div>
</body>
</html>

我的c#代码是这样的

Login.aspx.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.EnterpriseServices;
public partial class Login : System.Web.UI.Page
{
    int status;
    int role;
    SqlConnection conn;
    SqlCommand command;
    SqlDataReader reader;

    protected string Login1_Authenticate()
    {
        // create an open connection
        conn =
            new SqlConnection("Data Source=xxx;"
            + "Initial Catalog=xxx;"
            + "User ID=xxx;Password=xxx");
        conn.Open();
        //string userName;
        //userName = Convert.ToString(Console.ReadLine());

        // create a SqlCommand object for this connection
        command = conn.CreateCommand();
        command.CommandText = "EXEC dbo.SP_CA_CHECK_USER @USER_ID = '"+Login1.UserName+"', @PASSWORD = '"+Login1.Password+"'";
        command.CommandType = CommandType.Text;
        // execute the command that returns a SqlDataReader
        reader = command.ExecuteReader();
        // display the results
        while (reader.Read())
        {
        status = reader.GetInt32(0);
        }
        // close first reader
        reader.Close();
        //----------
        existTest();
        return "the login process is finished";
    }

    public static string GetData(int userid)
    {
        /*You can do database operations here if required*/
        return "my userid is" + userid.ToString();
    }
    public string existTest()
    {
        if (status == 0)
        {
            //login
            Session["userID"] = Login1.UserName;

            command.CommandText = "EXEC dbo.SP_CA_RETURN_USER_ROLE @USER_ID = '" + Login1.UserName + "'";
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                role = reader.GetInt32(0);
            }
            Session["roleID"] = role;
            if (Session["userID"] != null)
            {
                string userID = (string)(Session["userID"]);
                //string roleID = (string)(Session["roleID"]);
            }
            Response.Redirect("Home.aspx");
        }
        else
        {
            //wrong username/password
        }

        // close the connection
        reader.Close();
        conn.Close();
        return "process complete";
    }
}

如何将c#转换为Web api ?如果任何答案能将我链接到好的文档或教程,我将非常感激。

将其移动到Web API中需要创建一个新的Web API项目,设置适当的控制器,并将Form Control移动到参数中以传递给Controller方法。关于如何开始使用ASP的更多信息,请访问本教程。. NET Web MVC:开始使用asp.net Web API

请注意:在上述代码中执行动态SQL的方式会使您的应用程序容易受到SQL注入攻击!请考虑使用参数化SQL。