WebAPI项目搭建及其发布测试
创始人
2024-03-13 13:50:28

目录

1.创建项目

2.配置

3.发布

4.测试页面


1.创建项目

(1)创建ASP.NET Web应用程式,如下图:

(2)选择Empty,勾选Web API,点击确定创建,如下图:

(3)创建完成,如下图:

(4)添加文件夹及类,如下图:      

  

 说明:BLL(存放数据库相关的类),TestController(接口类),Models(存放Models类),MPage(存放啟動頁面,沒有任何功能)

2.配置

(1)Web.config配置文件,配置数据库连接及跨域,代码如下:

     

 (2)在Global.asax文件中添加,下面代码:

  protected void Application_BeginRequest(object sender, EventArgs e){var res = HttpContext.Current.Response;var req = HttpContext.Current.Request;//自定义header时进行处理if (req.HttpMethod == "OPTIONS"){res.AppendHeader("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name,Token,Cookie");res.AppendHeader("Access-Control-Allow-Methods", "POST,GET,PUT,PATCH,DELETE,OPTIONS");res.StatusCode = 200;res.End();}}

(3)啟動頁面:Hello.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Hello.aspx.cs" Inherits="WebAPI.MPage.Hello" %>



這個界面只是一個啟動頁面,沒有任何功能

(4)webapi设置默认返回json格式 ,WebApiConfig文件下Register方法下,添加代码:

   GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();//默认返回 json  GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("datatype", "json", "application/json"));// 解决json序列化时的循环引用问题config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

(5)BLL文件夹下创建一个SQLHelper类,用于连接数据库,代码:

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;namespace WebAPI.BLL
{/// /// 鏈接類別/// public enum DBConnList{DBConnStr1 = 0,DBConnStr2 = 1,QracleConnS = 2,}public static class SQLHelper{//数据库1public static string DBConnectionString1 = ConfigurationManager.AppSettings["DBConnectionString1"];//数据库2public static string DBConnectionString2 = ConfigurationManager.AppSettings["DBConnectionString2"];//Qracle数据库操作public static string QracleSring = ConfigurationManager.AppSettings["OraConn"];/// /// 獲得數據庫鏈接語句/// /// 請求數據庫類別/// public static string GetConnectStr(DBConnList DBConnIndex){var connstr = "";if (DBConnIndex == DBConnList.DBConnStr1){connstr = DBConnectionString1;}else if (DBConnIndex == DBConnList.DBConnStr2){connstr = DBConnectionString2;}else if (DBConnIndex == DBConnList.QracleConnS){connstr = QracleSring;}return connstr;}//SQL 数据库操作#region/// /// 增刪改查,不涉及事物/// /// /// 請求數據庫類別/// public static int ExecuteSQL(string sql, DBConnList DBConnIndex){var connstr = GetConnectStr(DBConnIndex);SqlConnection conn = new SqlConnection(connstr);SqlCommand cmd = new SqlCommand(sql, conn);conn.Open();int result = cmd.ExecuteNonQuery();conn.Close();return result;}/// /// 执行带SqlParameter的SQL语句/// /// /// 請求數據庫類別/// 參數/// public static int ExecuteSQLAndSP(string sql, DBConnList DBConnIndex, List sp){var connstr = GetConnectStr(DBConnIndex);SqlConnection connection = new SqlConnection(connstr);try{connection.Open();SqlCommand cmd = new SqlCommand(sql, connection);foreach (SqlParameter cur_sp in sp){if (cur_sp.Value != null){cmd.Parameters.Add(cur_sp);}}return cmd.ExecuteNonQuery();}finally{connection.Close();}}/// /// 執行多條SQL語句,實現數據庫事物/// /// 多條SQL語句/// 請求數據庫類別 /// 1 表示執行成功;2 表示出現錯誤了。public static void ExecuteSQLTran(List SQLStringList, DBConnList DBConnIndex, ref int result){var connstr = GetConnectStr(DBConnIndex);using (SqlConnection conn = new SqlConnection(connstr)){conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;SqlTransaction tx = conn.BeginTransaction();cmd.Transaction = tx;int curIndex = 0;try{for (int n = 0; n < SQLStringList.Count; n++){string strsql = SQLStringList[n].ToString();if (strsql.Trim().Length > 1){cmd.CommandText = strsql;cmd.ExecuteNonQuery();curIndex = curIndex + 1;}}tx.Commit();result = 1;}catch (SqlException ex){result = 2;Add_Log("ExecuteSqlTran:" + SQLStringList[curIndex] + " \r\n Error:" + ex.Message);tx.Rollback();//throw new Exception(E.Message);}}}/// /// 查詢/// /// 需要執行的SQL語句/// 請求數據庫類別/// public static DataTable SearchSQL(string sql, DBConnList DBConnIndex){var connstr = GetConnectStr(DBConnIndex);DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(sql, connstr);sda.Fill(ds);return ds.Tables[0];}public static DataTable Only_Table1(string exec, DBConnList DBConnIndex){var connstr = GetConnectStr(DBConnIndex);System.Data.DataTable dt_jdl = new DataTable();try{using (SqlConnection con = new SqlConnection(connstr)){if (con.State == ConnectionState.Closed){con.Open();} if (con.State == ConnectionState.Open || con.State == ConnectionState.Connecting){SqlDataAdapter sda2 = new SqlDataAdapter(exec, con);//全部通過寫存儲過程即可DataSet ds2 = new DataSet();sda2.Fill(ds2, "cxq");dt_jdl = ds2.Tables["cxq"];sda2.Dispose();ds2.Dispose();}con.Close();}return dt_jdl;}catch (Exception EX){return null;}}/// /// 增加日志/// /// public static void Add_Log(string msg){//msg = msg.Replace("'", "");//StringBuilder sb = new StringBuilder();//sb.AppendLine("Insert into SimpHomeDB.dbo.SYS_LOG (msg)");//sb.AppendLine("Values(N'[SimploScreenAPI]" + msg + "')");//ExecuteSQL(sb.ToString(), DBConnList.DBConnStrTE);}#endregion//Qracle数据库操作#region/// ///  执行SQL语句,返回DataTable;只用来执行查询结果比较少的情况/// /// /// /// /// public static DataTable QracleExecuteDataTableSQL(string sql, DBConnList DBConnIndex,params OracleParameter[] parameters){var connStr = GetConnectStr(DBConnIndex);using (OracleConnection conn = new OracleConnection(connStr)){conn.Open();using (OracleCommand cmd = conn.CreateCommand()){cmd.CommandText = sql;cmd.Parameters.AddRange(parameters);OracleDataAdapter adapter = new OracleDataAdapter(cmd);DataTable datatable = new DataTable();adapter.Fill(datatable);return datatable;}}}/// /// 执行SQl语句(增、删、改)/// /// 要执行的SQl语句/// public static bool Qracle_EXCUTE(string sql, DBConnList DBConnIndex){var connStr = GetConnectStr(DBConnIndex);try{OracleConnection connect = new OracleConnection(connStr);OracleCommand cmd = new OracleCommand();cmd.Connection = connect;cmd.CommandText = sql;connect.Open();cmd.ExecuteNonQuery();connect.Close();return true;}catch (Exception ex){throw new Exception(ex.Message);}}#endregion}
}

(6)Models文件下的类,例SysResponse类:

 /// /// 返回信息/// public class SysResponse{/// /// 状态码/// public string Code { get; set; }/// /// 描述信息/// public string Message { get; set; }/// /// 数据/// public object Data { get; set; }}

Common类

 public class Common{/// /// 轉化成Json/// /// 待轉換對象/// 轉換結果/returns>public static HttpResponseMessage ToJson(Object obj){String str;if (obj is String || obj is Char){str = obj.ToString();}else{JavaScriptSerializer serializer = new JavaScriptSerializer();str = serializer.Serialize(obj);}HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };return result;}      }

(7)接口类TestController 

 public class TestController : ApiController{     [HttpGet]public HttpResponseMessage HelloOne(string Line){SysResponse res = new SysResponse();try{//sql数据库var emp_dt = SQLHelper.SearchSQL("select * from pcp where Line = '" + Line + "'", DBConnList.DBConnStr1);//Qracle数据库//var emp_dt = SQLHelper.QracleExecuteDataTableSQL("select * from (select * from scqhp.cell_sort_info_by_customer) where ROWNUM<=10 ORDER BY ROWNUM asc", DBConnList.QracleConnS);//var GoodsNo = emp_dt.Rows[0]["CELL_SN"].ToString();var GoodsNo = emp_dt.Rows[0]["P_N"].ToString();res.Code = "01";res.Message = GoodsNo;res.Data = "001";}catch (Exception ex){res.Code = "02";res.Message = "調用失敗Hello,Exception:" + ex.Message + Line;res.Data = "002";}return Common.ToJson(res);}}

说明:其中  [HttpGet]可以按照需求更改为  [HttpPost]  [HttpPut]  [HttpDelete]

3.发布

写好的接口需要发布到服务器或者本机的IIS进行测试,发布与发布网页一样

4.测试页面



webapi测试



查询物料

Line:
料号:

说明:其中http://10.20.32.73:8000为发布webAPI的网址

总结:本文主要讲述了WebAPI项目的搭建及其配置,然后到发布及其测试整个过程。记录方便查阅。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...