using (var client = new HttpClient()) { client.BaseAddress = new Uri(Url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); using (var task = client.PostAsJsonAsync(Url,body)) { if (task.Result.StatusCode != HttpStatusCode.OK) throw new Exception(task.Result.ReasonPhrase); }
}
不确定为什么我们得到每个套接字地址(协议/网络地址/端口)的唯一用法通常是允许的xx.xxx.xxx.xx:80错误
System.AggregateException: One or more errors occurred. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the Remote Server ---> System.Net.sockets.socketException: Only one usage of each socket address (protocol/network address/port) is normally permitted xx.xx.xx.xx:80 at System.Net.sockets.socket.EndConnect(IAsyncResult asyncResult) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,Socket s4,Socket s6,Socket& socket,IPAddress& address,ConnectSocketState state,IAsyncResult asyncResult,Exception& exception) --- End of inner exception stack trace --- at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult,TransportContext& context) at System.Net.Http.httpclienthandler.GetRequestStreamCallback(IAsyncResult ar) --- End of inner exception stack trace --- --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
解决方法
Address already in use.
Typically,only one usage of each socket
address (protocol/IP address/port) is permitted. This error occurs if
an application attempts to bind a socket to an IP address/port that
has already been used for an existing socket,or a socket that was not
closed properly,or one that is still in the process of closing. For
server applications that need to bind multiple sockets to the same
port number,consider using setsockopt (SO_REUSEADDR). Client
applications usually need not call bind at all—connect chooses an
unused port automatically. When bind is called with a wildcard address
(involving ADDR_ANY),a WSAEADDRINUSE error Could be delayed until the
specific address is committed. This Could happen with a call to
another function later,including connect,listen,WSAConnect,or
WSAJoinLeaf.
这意味着你要么有多个HttpClient对象试图同时将它们绑定到同一个本地IP /端口,要么另一个应用程序正在使用HttpClient试图也使用的IP /端口.
更有可能的是,您可能经常发布HTTP请求,并且可能没有完全消耗响应,这会阻止ASP汇集和重用连接,从而随着时间的推移遇到端口耗尽.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。