相关疑难解决方法(0)

远程主机强制关闭现有连接

我正在使用一个商业应用程序,它正在抛出带有消息的SocketException,

远程主机强制关闭现有连接

客户端和服务器之间的套接字连接会发生这种情况 连接仍然存在,并且正在传输大量数据,但它随后就无法断开连接.

有没有人见过这个?原因是什么?我可以猜到一些原因,但是有没有办法在这段代码中添加更多内容以找出原因可能是什么?

欢迎任何意见/想法.

... 最新的 ...

我有一些.NET跟踪记录,

System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z

System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z 

System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
Run Code Online (Sandbox Code Playgroud)

根据日志记录的其他部分,我看到它说'0#0'表示正在发送一个0字节长度的数据包.但这究竟意味着什么?

发生两种可能性之一,我不确定,

1)连接正在关闭,但数据随后被写入套接字,从而产生上述异常.0#0只表示没有发送任何内容,因为套接字已经关闭.

2)连接仍然是打开的,并且正在发送一个零字节的数据包(即代码有一个错误),0#0表示正在尝试发送一个零字节的数据包.

你怎么看?我想这可能是不确定的,但也许其他人已经看到过这种事情了?

.net c# sockets networking

130
推荐指数
6
解决办法
36万
查看次数

更新.NET Web服务以使用TLS 1.2

我需要使用TLS 1.2从我的.NET Web服务连接到另一个将强制TLS 1.2的服务.我找到了一个资源,说.NET 4.6默认使用TLS 1.2,这听起来像最简单的解决方案.我在服务器上更新了.NET框架并重新启动.在IIS中,我尝试使用.NET 4.6创建应用程序池,但4.0是唯一的选择.然后我发现了一些东西说它仍然会说4.0因为4.6是对.NET 4.0的"到位"更新.所以我想也许我已经完成了.然而,在我出于无关原因的错误页面上,它表示Microsoft .NET Framework Version:4.0.30319我似乎没有成功升级.有关如何确保我的应用程序池使用.NET 4.6的更多指针,或更一般地说如何启用TLS 1.2?

.net c# tls1.2

68
推荐指数
5
解决办法
13万
查看次数

使用C#HttpClient api和postman测试之间的区别?客户端调用适用于邮递员但不适用于C#httpClient getAsync

在此输入图像描述在此输入图像描述我正在测试一个休息API帖子,当我在Postman上试用它时效果很好.但是,在某些情况下(与发布XML数据相关)如果我使用HttpClient API发布,我会收到以下错误:

"无法从传输连接读取数据:远程主机强行关闭现有连接."

但是相同的xml内容在Postman上工作正常,状态正常且响应正确.

任何人都知道使用C#HttpClient api和postman测试之间的区别是什么?如何配置我的api调用以匹配邮递员的行为?

这里我附上了源代码和Postman截图

public void createLoan()
{
    string baseCreateLoanUrl = @"https://serverhost/create?key=";
    var strUCDExport = XDocument.Load(@"C:\CreateLoan_testcase.xml");

    using (var client = new HttpClient())
    {
        var content = new StringContent(strUCDExport.ToString(), Encoding.UTF8, Mediatype);
        string createLoanApi = string.Concat(baseCreateLoanUrl, APIKey);

        try
        {
            var response = client.PostAsync(createLoanApi, content).Result;
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error Happened here...");
            throw;
        }

        if (response.IsSuccessStatusCode)
        {
            // Access variables from the returned JSON object
            string responseString = response.Content.ReadAsStringAsync().Result;
            JObject jObj = JObject.Parse(responseString);

            if (jObj.SelectToken("failure") == null)
            {
                // …
Run Code Online (Sandbox Code Playgroud)

c# api rest httpclient postman

6
推荐指数
2
解决办法
4459
查看次数

.NET HttpClient - 远程主机强行关闭现有连接

我从 ASP.NET MVC 控制器调用了这段代码:

protected string PostData(string url, ByteArrayContent content)
        {
            using (var client = new HttpClient())
            {
                client.Timeout = TimeSpan.FromDays(1);
                return client.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果我将数据发布到需要一些时间来执行的 REST 服务,我会收到此错误:

System.AggregateException: One or more errors occurred. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dotnet-httpclient

2
推荐指数
1
解决办法
1万
查看次数