winform程序模拟http服务

首先安装几个包:

Microsoft.Owin

Microsoft.Owin.Hosting

Microsoft.Owin.Host.HttpListen

Microsoft.AspNet.WebApi.OwinSelfHost

然后再Program.cs文件中添加以下代码,http服务将会在程序启动时启动

csharp 复制代码
using Microsoft.Owin.Builder;
using Owin;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using Microsoft.Owin.Hosting;

namespace Test
{
    class Startup
    {
        // 配置Web API路由和其他设置
        public void Configuration(IAppBuilder appBuilder)
        {
            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}",
                defaults: new { id = System.Web.Http.RouteParameter.Optional }
            );
            appBuilder.UseWebApi(config);
        }
    }
    internal static class Program
    {
        private static IDisposable _webApp;
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // 启动Web API服务
            string baseAddress = "http://*:9005/";
            _webApp = WebApp.Start<Startup>(url: baseAddress);
            Console.WriteLine($"Web API running at {baseAddress}");

            Login login = new Login();
            DialogResult dialogResult = login.ShowDialog();

            if (dialogResult == DialogResult.OK)
            {
                Application.Run(new Form1()); 
            }
        }
    }
}

然后编写控制器

csharp 复制代码
[Route("api/[controller]/[action]")]//
public class PushTestResultController : ApiController
{
    [HttpPost]
    public dynamic PushTestResultAsync(ReceiveTestResult receiveTest) {
        string result= JsonConvert.SerializeObject(receiveTest);
        Log.Error(result);
        return null;
    }

    [HttpGet] 
    public dynamic getaaa()
    {
        return "aaa";
    }
}