vs2019创建.netCore项目

1、打开vs2019—创建新项目—.NET Core控制台应用—输入项目名称和位置等

vs2019创建.netCore项目_第1张图片

vs2019创建.netCore项目_第2张图片

2、依赖注入和启动控制台程序

代码:

  static void Main(string[] args)
        {
            Console.WriteLine("程序测试!");
            Console.Title = "TestServer";

            using (ServiceProvider container = RegisterServices())
            {
                try
                {
                    var testClass = container.GetRequiredService();
                    testClass.Start();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }

引入如下包:Microsoft.Extensions.DependencyInjection

3、新建一个逻辑类

public class TestClass
    {
        public void Start()
        {
            Console.WriteLine("处理逻辑");
        }
    }

4、对控制台程序的依赖注入

代码:

	    
        /// 
        /// 进行依赖注入
        /// 
        /// 
        static ServiceProvider RegisterServices()
        {
            var services = new ServiceCollection();
            services.AddSingleton();
            return services.BuildServiceProvider();
        }

引入如下包:Microsoft.Extensions.Configuration

5、新建类以读取配置文件

public static class AppConfigurations
    {
        private static readonly ConcurrentDictionary ConfigurationCache;

        static AppConfigurations()
        {
            ConfigurationCache = new ConcurrentDictionary();
        }

        public static IConfigurationRoot Get(string path, string environmentName = null)
        {
            var cacheKey = path + "#" + environmentName;
            return ConfigurationCache.GetOrAdd(
                cacheKey,
                _ => BuildConfiguration(path, environmentName)
            );
        }

        private static IConfigurationRoot BuildConfiguration(string path, string environmentName = null)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(path)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

            if (!string.IsNullOrWhiteSpace(environmentName))
            {
                builder = builder.AddJsonFile($"appsettings.{environmentName}.json", optional: true);
            }

            builder = builder.AddEnvironmentVariables();

            return builder.Build();
        }
    }

引入如下包:

  1. Microsoft.Extensions.Configuration
  2. Microsoft.Extensions.Configuration.FileExtensions
  3. Microsoft.Extensions.Configuration.Json
  4. Microsoft.Extensions.Configuration.EnvironmentVariables

6、启动web监听

代码:


            Console.WriteLine("是否启动WebAPI?yes/no");
            string readapi = Console.ReadLine();
            if (readapi == "yes")
            {
                var host = WebHost.CreateDefaultBuilder(args)
                    //.UseKestrel()
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    //.UseUrls("http://*:8029")
                    .UseIISIntegration()
                    .UseStartup()
                    .Build();
                host.Run();

                Console.WriteLine("接口停止监听,继续输入命令退出服务!强行关闭进程有丢数据风险!");
            }

7、创建类

Startup.cs:

  public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddMvc().AddJsonOptions(options =>
            {
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            });
            services.AddSingleton();
            services.AddScoped();

            services.AddCors(options =>
            {
                options.AddPolicy("any", builder =>
                {
                    builder.AllowAnyOrigin() //允许任何来源的主机访问
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定处理cookie
                });
            });

        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                //app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
            app.UseCors("any");
        }
    }

引入如下包:

  1. Microsoft.AspNetCore.Mvc.Core
  2. Microsoft.AspNetCore.Mvc
  3. Microsoft.AspNetCore.Mvc
  4. Microsoft.AspNetCore.HttpsPolicy
  5. Microsoft.Extensions.DependencyInjection.Abstractions

8、创建如下类:web配置文件(切记,配置文件始终复制)

ConfigurationUtil.cs

    public class ConfigurationUtil
    {
        public static readonly IConfiguration Configuration;

        static ConfigurationUtil()
        {
            Configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", true)
                .Build();
        }

        public static T GetSection(string key) where T : class, new()
        {
            var obj = new ServiceCollection()
                .AddOptions()
                .Configure(Configuration.GetSection(key))
                .BuildServiceProvider()
                .GetService>()
                .Value;
            return obj;
        }

        public static string GetSection(string key)
        {
            return Configuration.GetValue(key);
        }
    }

9、新建配置文件  appsettings.json

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://*:8083"
      }
    }
  },
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"
  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ],

  "ConnectionStrings": {
    "RedisConnectionString": "*"
  }
}

10、新建一个controller类

在class前写上

[EnableCors("any")]

[ApiController]

然后写一个测试类

[Route("api/StructData/GetTest")]
        [HttpPost]
        public object GetTest()
        {
            try
            {
                //_alarmData.DelSomthing();
                JObject result = new JObject();
                result.Add("ReturnCode", "OK");
                return result;
            }
            catch (Exception)
            {
                return new string[] { "value1", "value2" };
            }
        }

 

你可能感兴趣的:(c#)