C# WebApi 调用
public static class HttpRequestHelper { #region Get调用 /// <summary> /// 使用get方法异步请求 /// </summary> /// <param name="url">目标链接</param> /// <returns>返回的字符串</returns> private async static Task<HttpResponseMessage> GetResponseAsync(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null) { try { HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }); StringBuilder builder = new StringBuilder(); builder.Append(url); if (header != null) { client.DefaultRequestHeaders.Clear(); foreach (var item in header) { client.DefaultRequestHeaders.Add(item.Key, item.Value); } } if (parame != null && parame.Count > 0) { builder.Append("?"); int i = 0; foreach (var item in parame) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } } HttpResponseMessage response = await client.GetAsync(builder.ToString()); response.EnsureSuccessStatusCode();//用来抛异常的 return response; } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则之抛出一个默认500的异常 var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(e.ToString()), ReasonPhrase = "error" }; throw new HttpResponseException(resp); } } public static async Task<string> GetStringAsync(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null) { var response = await GetResponseAsync(url, header, parame); return await response.Content.ReadAsStringAsync(); } /// <summary> /// 使用Get返回异步请求返回List集合 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static async Task<List<T>> GetListAsync<T>(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null) { var response = await GetResponseAsync(url, header, parame); return response.Content.ReadAsAsync<List<T>>().Result; } #endregion #region Post调用 /// <summary> /// 使用post方法异步请求 /// </summary> /// <param name="url">目标链接</param> /// <param name="json">发送的参数字符串-json</param> /// <returns>返回的字符串</returns> public static async Task<string> PostAsync(string url, string json, Dictionary<string, string> header = null, bool Gzip = false) { HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }); HttpContent content = new StringContent(json); content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); if (header != null) { client.DefaultRequestHeaders.Clear(); foreach (var item in header) { client.DefaultRequestHeaders.Add(item.Key, item.Value); } } HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); string responseBody; if (Gzip) { GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync()); responseBody = new StreamReader(inputStream).ReadToEnd(); } else { responseBody = await response.Content.ReadAsStringAsync(); } return responseBody; } #endregion //Put、Delete方式相同 }
同一控制器包含多个API接口,通过指定路由实现,如图:
效果:
.NetCore swagger发布到iis时访问api出现404的解决方案
介绍
使用netcore作为纯后端提供api已经变得越来越频繁,swagger也成为很多人的选择。通常会在代码中限制ASPNETCORE_ENVIRONMENT为Production时关闭swagger。但是往往我们需要将api发布到本地iis调试或供他人使用时,swagger将会被禁止。发布后项目往往默认为Production环境,将其修改为Development即可解决。
解决方法
打开发布到iis的文件夹下的web.config文件,添加以下代码:
<environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables>
修改后的web.config结构大致如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments="*.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration> <!--ProjectGuid: 15af0485-b65a-422a-bf12-5877b85abb6c-->
.NET Core中如何读取appsetting.json配置文件
appsetting.json中填入配置
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Config": {
"DbConnectionString": "Database=test;Data Source=127.0.0.1;User Id=root;Password=root;charset=utf8;pooling=true"
}
}
编写配置文件操作类
/// <summary> /// 读取appsetting配置 /// </summary> public static class AppSetting { private static IConfigurationSection _configurationSection = null; /// <summary> /// 读取配置 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetAppSetting(string key) { return _configurationSection.GetSection(key)?.Value; } /// <summary> /// 设置配置 /// </summary> /// <param name="section"></param> public static void SetAppSetting(IConfigurationSection section) { _configurationSection = section; } }
在Startup.cs的ConfigureServices中设置配置
public void ConfigureServices(IServiceCollection services) { // ... // 设置配置 AppSetting.SetAppSetting(Configuration.GetSection("Config")); }
使用配置
string connStr = AppSetting.GetAppSetting("PgConnectionString");
相关文章链接 :
http://blog.itpub.net/28974745/viewspace-2761941/
https://blog.csdn.net/gtosky4u/article/details/113886135 https://www.cnblogs.com/liuqiyun/p/9144816.html
https://blog.csdn.net/u011127019/article/details/53021164
(简单API接口创建教程)