如何为在线客服系统的 Web Api 后台主程序添加 Bootstrap 启动页面
背景
我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。这个系统的核心后台主程序,在最早期是完全没有页面,经常有朋友部署之后,一访问是 404,以为没有部署成功。我一看这肯定不行啊,可后台主程序是一个 Web Api 项目,没有页面,怎么办呢?
1.x 的实现方式
通过 Web Api 接口,直接返回字符串
于是我通过 Web Api 接口,输出一些基本的状态信息,如下:
namespace Sheng.Linkup.Server.Controllers
{
[ApiController]
public class StatusController : ControllerBase
{
[HttpGet]
public string Get()
{
//在此输出基本状态信息
string msg = "升讯威在线客服与营销系统 (私有化部署版)";
msg += "https://kf.shengxunwei.com";
return msg;
}
}
}

这种方式好歹解决了有和无的问题,一直坚持使用了很久。直到最近,因为一个客户的定制化需求,需要为主程序加入一特殊的状态页面和运维功能。
2.x 的实现方式
引入 Bootstrap 相关包,添加美观的,可交互的启动页面
先看看效果,是不是比 1.x 的效果好太多了呢。虽然是一个 Web Api 项目,但是也可以提供美观的页面。

实现方式
要在 Web Api 中添加页面,首先我们在 Bootstrip 的官网,下载它最新的开发包。然后将其添加到我们的项目文件中。
我们在项目根目录下,添加一个 html 文件夹,然后建立一个 Bootstrip 子文件夹,把官网下载到的文件全部放进去。

第二步我们在 Program.cs 中,引入新建的 wwwroot 目录,并开启它的静态文件访问功能。
String wwwrootFiles = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(wwwrootFiles),
RequestPath = "/"
});
最后,我们把开发好的状态显示页面,放在 html 文件夹中:

这里给出一个页面代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>客服系统状态</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
text-align: center;
}
h1 {
color: #333;
}
.status-box {
border: 1px solid #ccc;
border-radius: 5px;
padding: 20px;
width: 300px;
margin: 0 auto;
background-color: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body>
<h1>程序运行状态</h1>
<div class="status-box">
<p>当前状态:<span id="status-text">正在运行</span></p>
</div>
</body>
</html>
按下 Visual Studio 的启动项目按钮,就能看到我们的默认启动页面了。
整个过程可以说非常的简单和方便。这样,即使是 Web Api 项目,你也可以为用户提供非常清晰美观的状态显示页面了。
简介下这个 .net 开发的客服系统
100% 私有化部署在您的自有服务器,可全天候 7 × 24 小时挂机运行,不掉线不丢消息,欢迎实测。


希望能够打造: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。
钟意的话请给个赞支持一下吧,谢谢~
如何为在线客服系统的 Web Api 后台主程序添加 Bootstrap 启动页面的更多相关文章
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
近段时间利用业余时间开发了一套在线客服系统,期间遇到过大大小小不少问题,好在都一一解决,最终效果也还可以,打算写一个系列的文章把开发过程详细的记录下来. 希望能够和更多的开发人员互相交流学习,也希望有 ...
- Vue在线客服系统【开源项目】
1. 项目介绍 一个基于Vue2.0的在线客服系统. 技术栈包含:Vue.VueX.Vue Router.Element UI. 2. 功能介绍 项目包含了2个模块:客服端和访客端. 2.1 客服端功 ...
- .net core 和 WPF 开发升讯威在线客服系统【私有化部署免费版】发布
希望 .net 和 WPF 技术时至今日,还能有一些存在感. 这个项目源于2015年前后,当时开发的初版,我使用了 ASP.NET MVC 做为后端,数据库使用原生 ADO.NET 进行操作.WPF ...
- CentOS 30分钟部署 .net core 在线客服系统
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程.期间有一些朋友希望能够给出 Linux 环境的安装部署指导,本文基于 CentOS 8.3 来安装部署.在本文中我 ...
- Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...
- 使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署免费下载:https://docs.sh ...
- .net core 和 WPF 开发升讯威在线客服系统:调用百度翻译接口实现实时自动翻译
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...
- .net core 和 WPF 开发升讯威在线客服系统:调用有道翻译接口实现实时自动翻译的方法
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...
- Linux 运行升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...
- 详解升讯威在线客服系统前端 JavaScript 脚本加密技术(1)
我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户.对我来说,只要能获得用户的认可,就是我最大的动力. 这段时间有几个技术小伙伴问了我一个有意思的问题:"你的前端脚本是 ...
随机推荐
- 【赵渝强老师】Docker Swarm集群的数据持久化
如果Docker Swarm集群中运行了mysql.nginx等服务,这些服务的数据如果没有挂载到宿主机中,那么容器一旦停止运行,那就意味着数据丢失. 有什么方法可以解决swarm集群中运行的服务能够 ...
- JDBC后端实现查询功能逻辑
// 包名 package com.zhulx.JDBC; // 导入实例类 import com.zhulx.pojo.Account; import java.sql.*; import java ...
- 你所理解的 mvvm 模型
mvvm 是Model-View-ViewModel 数据驱动视图模型,是mvc 的改进版 ,mvvm把界面ui和业务逻辑分离 ,model 是data属性的数据 , view 是模板结构 ,view ...
- AtCoder Beginner Contest 371(ABCDE)
A 个人直接硬解,讨论情况也并不复杂 代码: #include<bits/stdc++.h> #define int long long using namespace std; cons ...
- Centos7 安装配置FTP服务
1.FTP简介 ftp(File Transfer Protocol文件传输协议)是基于TCP/IP 协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端 FTP协议会在客户端 ...
- mysql进阶-索引篇
索引(SQL主要的优化方式) 介绍: 索引(index)是帮助MySQL高效获取数据的数据结构(有序).在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据 ...
- NLog 在NetCore中实现多实例注入DI, 实现多租户模式
通常, 我们在使用了 Microsoft.Extensions.DependencyInjection DI框架的情况下, 我们一般通过 .ConfigureLogging((HostBuilderC ...
- KubeKey 2.1.0 发布:增强 K8s 离线交付体验
2022 年 5 月 6 日,KubeKey 2.1.0 正式发布,这是 KubeKey 的第 8 个正式版本.该版本增强了离线部署能力和交付体验,同时支持"一云多芯",即同一个 ...
- es之增删改查
查询 index: GET task_results/_search/ 普通查询: {"query":{"bool":{"must":[{& ...
- 会话层技术-cookie
会话层技术cookie的使用 cookie拿下! package com.atguigu.servlet; import javax.servlet.ServletException; import ...