C# HttpClient请求在windows下工作,但在我的服务器Ubuntu中不工作
我是asp.net核心的新手。此代码适用于windows,而不是我的ubuntu服务器。 HttpClient在Windows中工作,而不是在Ubuntu中C# HttpClient请求在windows下工作,但在我的服务器Ubuntu中不工作,c#,ubuntu,httpclient,C#,Ubuntu,Httpclient,我是asp.net核心的新手。此代码适用于windows,而不是我的ubuntu服务器。 HttpClient在Windows中工作,而不是在Ubuntu中 public async Task<JsonResult> PostPaid ( [FromBody] object ob) { String rep = ""; User d = JsonConvert.DeserializeObject<User>(ob.ToStr
public async Task<JsonResult> PostPaid ( [FromBody] object ob)
{
String rep = "";
User d = JsonConvert.DeserializeObject<User>(ob.ToString());
try
{
var vm = new { username = d.Login, password = d.Pwd };
{
//ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};
HttpClient client = new HttpClient(handler);
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("Accept", "application/json");
var httpRequestMessage = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri(d.MyUrl),
Content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, "application/json")
};
httpRequestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage result = await client.SendAsync(httpRequestMessage);
rep = await result.Content.ReadAsStringAsync();
}
}
catch (Exception ex)
{
return Json(ex.ToString());
}
return Json(rep);
}
公共异步任务后付费([FromBody]对象ob)
{
字符串rep=“”;
用户d=JsonConvert.DeserializeObject(ob.ToString());
尝试
{
var vm=new{username=d.Login,password=d.Pwd};
{
//ServicePointManager.ServerCertificateValidationCallback=委托{return true;};
var handler=new-HttpClientHandler()
{
ServerCertificateCustomValidationCallback=HttpClientHandler.DangerousAcceptionServerCertificateValidator
};
HttpClient=新的HttpClient(处理程序);
//ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add(“Accept”、“application/json”);
var httpRequestMessage=新的httpRequestMessage
{
方法=HttpMethod.Post,
RequestUri=新的Uri(d.MyUrl),
Content=newstringcontent(JsonConvert.SerializeObject(vm),Encoding.UTF8,“application/json”)
};
httpRequestMessage.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
HttpResponseMessage结果=等待客户端.SendAsync(httpRequestMessage);
rep=wait result.Content.ReadAsStringAsync();
}
}
捕获(例外情况除外)
{
返回Json(例如ToString());
}
返回Json(rep);
}
我想要一个在ubuntu中工作的例子。
错误消息:“出现一个或多个错误。(任务已取消。)
“System.AggregateException:发生一个或多个错误。(任务已取消。)\n-->System.Threading.Tasks.TaskCanceledException:任务已取消。\n----内部异常堆栈跟踪结束---\n位于System.Threading.Tasks.task1.GetResultCore(布尔waitCompletionNotification)\n位于System.Threading.Tasks.Tasks
1.get\u Result”()\n位于E:\Nouveau dossier\ProjetDevelopment\Projets\webasp\Sms-Copie(40)-bon anomalie PostPaid\WebMat\Controllers\UserController.cs中的SmsWeb.Controllers.PostPaid(对象ob)处:第765行“
通常这种类型的故障是由于HTTPS(安全)造成的并且TLS身份验证失败。请尝试添加到静态方法上方的代码开头:ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.TLS;HttpClient client=new HttpClient();“不工作”是什么意思?任何异常?如果是,请包括完整的异常消息、内部异常和stacktrace。@mastermelo不要挂断ServicePointManager,您不会将其用于.NET Core中的HttpClient。特别是因为您还没有提到错误。异常:“出现一个或多个错误。(任务已取消)。”