> 技术文档 > 本地开发用ASP.NET Core Web API项目创建及测试_vs2022创建webapi

本地开发用ASP.NET Core Web API项目创建及测试_vs2022创建webapi


1. 服务端代码(C#)

1.1 创建ASP.NET Core Web API项目
  1. 打开Visual Studio 2022。

  2. 选择“创建新项目”。

  3. 选择“ASP.NET Core Web API”模板,点击“下一步”。

  4. 输入项目名称(如OracleApi),选择项目位置,点击“创建”。

1.2 安装Oracle数据库依赖

使用NuGet管理包工具在项目中安装Oracle数据库的EF Core依赖:Oracle.EntityFrameworkCore

1.3 配置数据库上下文

在项目中创建一个AppDbContext类,用于连接和操作users表。

AppDbContext.cs代码:
using Microsoft.EntityFrameworkCore;namespace OracleApi{    public class AppDbContext : DbContext    {        public AppDbContext(DbContextOptions options) : base(options) { }        public DbSet Users{ get; set; }  // 对应users表    }}

创建实体类User

User.cs代码:

using System.ComponentModel.DataAnnotations.Schema;namespace OracleApi{ [Table(\"users\")] // 显式指定表名 public class User { [Key] //指定主键为Id public string Id{ get; set; } // 对应数据库中的 Id 字段 public string Name{ get; set; } // 对应数据库中的 Name 字段 }}
1.4 创建控制器

Controllers文件夹中创建一个TeachersController类,用于处理按TEACHCODE查询TEACHERNAME的请求。

TeachersController.cs代码:
using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;using System.Linq;using System.Threading.Tasks;namespace OracleApi.Controllers{ [ApiController] [Route(\"api/[controller]\")] public class TeachersController : ControllerBase { private readonly AppDbContext _context; public TeachersController(AppDbContext context) { _context = context; } [HttpGet(\"{Id}\")] public async Task GetTeacherName(string Id) { try { var user = await _context.Users  .Where(t => t.Id == Id)  .Select(t => new { t.Id, t.Name })  .FirstOrDefaultAsync(); if (user == null) {  return NotFound($\"User with Id {Id} not found.\"); } return Ok(user); } catch (DbException ex) { return StatusCode(500, $\"Database error: {ex.Message}\"); } catch (Exception ex) { return StatusCode(500, $\"Internal server error: {ex.Message}\"); } } }}
1.5 配置数据库连接

appsettings.json中添加Oracle数据库的连接字符串。假设你的Oracle数据库配置如下:

  • 用户名:your_username

  • 密码:your_password

  • 数据库服务器地址:your_oracle_server

  • 端口:1521

  • 服务名:your_service_name

appsettings.json代码:
{ \"ConnectionStrings\": { \"DefaultConnection\": \"User Id=your_username;Password=your_password;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_oracle_server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=your_service_name)));Persist Security Info=True\" }, \"Logging\": { \"LogLevel\": { \"Default\": \"Information\", \"Microsoft.AspNetCore\": \"Warning\" } }, \"AllowedHosts\": \"*\"}
1.6 配置依赖注入

Program.cs中配置数据库上下文和中间件。

Program.cs代码:
// 这段代码是 ASP.NET Core Web API 应用程序的入口点,它配置了应用程序的中间件、服务和数据库上下文。using Microsoft.AspNetCore.HttpsPolicy; // 引入用于 HTTPS 策略的命名空间using Microsoft.EntityFrameworkCore; // 引入 Entity Framework Core 命名空间,用于数据库操作using Microsoft.Extensions.Options; // 引入用于配置选项的命名空间namespace WebApplication1 // 定义命名空间,通常是项目名称{ public class Program // 定义一个名为 Program 的类,作为应用程序的入口 { public static void Main(string[] args) // 定义主方法,程序的入口点 { // 创建一个 WebApplicationBuilder 实例,用于配置应用程序 var builder = WebApplication.CreateBuilder(args); // 添加 CORS 配置 // CORS(跨域资源共享)允许前端应用从不同的源(域名、协议或端口)发送请求 builder.Services.AddCors(options => { // 添加默认的 CORS 策略 options.AddDefaultPolicy(policy => {  // 允许来自 http://localhost 的请求  policy.WithOrigins(\"http://localhost\") .AllowAnyHeader() // 允许任何请求头 .AllowAnyMethod(); // 允许任何 HTTP 方法(GET、POST 等) }); // 可以定义多个 CORS 策略,并在需要时指定使用哪个策略 options.AddPolicy(\"AllowLocalhost3000\", policy => {  policy.WithOrigins(\"http://localhost:3000\") .AllowAnyHeader() .AllowAnyMethod(); }); options.AddPolicy(\"AllowAll\", policy => {  policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); }); // 添加控制器支持 builder.Services.AddControllers(); // 添加数据库上下文服务 builder.Services.AddDbContext(options => // 配置数据库上下文使用 Oracle 数据库 options.UseOracle(builder.Configuration.GetConnectionString(\"DefaultConnection\"))); // 构建应用程序实例 var app = builder.Build(); // 使用 CORS 中间件 // 确保应用程序能够处理跨域请求。 app.UseCors(); // 使用默认策略 //app.UseCors(\"AllowLocalhost3000\"); // 使用指定的策略 // 使用授权中间件,用于处理用户授权逻辑。 app.UseAuthorization(); // 映射控制器路由,使得应用程序能够处理 HTTP 请求并调用相应的控制器方法。 app.MapControllers(); // 启动应用程序,开始监听 HTTP 请求。 app.Run(); } }}

2. 客户端代码(JQuery)

2.1 创建HTML页面

创建一个简单的HTML页面,用于输入TEACHCODE并调用服务端接口。

index.html代码:
   Teacher Query  

Query Teacher by TEACHCODE

$(document).ready(function () { $(\'#queryButton\').click(function () { var userId= $(\'#userId\').val(); $.ajax({ url: `http://localhost:5000/api/users/${userId}`, // 修改为你的API地址 type: \'GET\', success: function (data) { $(\'#result\').html(`ID: ${data.Id}, Name: ${data.Name}`); }, error: function (xhr, status, error) { $(\'#result\').html(`Error: ${error}`); } }); }); });

3. 部署到Windows上的Apache服务器

3.1 准备发布文件
  1. 在Visual Studio中,选择“发布”选项,将项目发布为自包含的可执行文件。

  2. 选择目标框架(如net6.0)和目标运行时(如win-x64)。

  3. 选择发布目标路径,例如bin\\Release\\publish

  4. 点击“发布”。

3.2 配置Apache
  1. 安装Apache:确保Apache服务器已安装并运行。

  2. 安装mod_proxy模块:确保mod_proxy模块已启用。打开httpd.conf文件,取消注释以下行:

    apache复制

    LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.so
  3. 配置虚拟主机:在httpd.conf文件中,添加以下虚拟主机配置:

  •  ServerName localhost DocumentRoot \"C:/Apache24/htdocs\" ProxyPreserveHost On ProxyPass /api/ http://localhost:5000/api/ ProxyPassReverse /api/ http://localhost:5000/api/
  • DocumentRoot指向Apache的根目录。

  • ProxyPassProxyPassReverse/api/路径的请求转发到ASP.NET Core应用。

   4. 保存并重启Apache

3.3 启动ASP.NET Core应用
  1. 打开命令提示符或PowerShell。

  2. 导航到发布目录(如bin\\Release\\publish)。

  3. 启动应用,命令行输入:

    dotnet OracleApi.dll
3.4 将客户端代码放在Apache根目录
  1. index.html文件放在Apache的根目录(如C:\\Apache24\\htdocs)。

  2. 确保Apache能够正常提供静态文件服务。

4. 测试

  1. 打开浏览器,访问http://localhost

  2. 输入用户Id 并点击“Query”按钮。

  3. 如果一切配置正确,页面将显示对应的用户信息。