我们正在与第三方公司合作,并使用他们的Web服务。除了一个需要byte[](File)作为输入的方法之外,所有方法都工作正常。当我们调用该方法时,会出现以下异常:
接收对https://someaddress/Services/DefineMerchant的HTTP响应时出错。这可能是因为服务终结点绑定未使用HTTP协议。这也可能是因为服务器中止了HTTP请求上下文(可能是因为服务关闭)。有关详细信息,请参阅服务器日志。基础连接已关闭:接收时发生意外错误。无法从传输连接读取数据:远程主机强制关闭了现有连接。远程主机强制关闭了现有连接
这是抛出异常的代码行:
using (var client = new SomeService.DefineMerchantsClient())
{
client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
client.ClientCredentials.UserName.UserName = "*****";
client.ClientCredentials.UserName.Password = "****";
var response = await client.AddRequestDocumentAsync(new MarketerDocEntity { File = requestData.File, DocumentType = requestData.DocumentType, DocumentTrackingCode = requestData.DocumentTrackingCode });
}
这是我App.config(控制台应用程序- .Net Framework 4.7.2):
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDefineMerchants"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="TransportWithMessageCredential" />
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://someaddress/Services/DefineMerchant" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDefineMerchants" contract="SomeService.IDefineMerchants" name="BasicHttpBinding_IDefineMerchants"/>
</client>
</system.serviceModel>
<system.web>
<httpRuntime maxRequestLength="2147483647" executionTimeout="103600"/>
</system.web>
我也尝试过这行代码,但它不起作用:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
这个异常是服务器端错误(我没有访问权限)吗?或者我应该在程序中更改一些内容吗?谢谢!
1条答案
按热度按时间mrzz3bfm1#
据我所知,可能有以下几种解决办法:
1.防火墙。有时会因为防火墙打开而出错,请将其关闭,然后重试。
1.将以下代码添加到wcf服务器配置中。
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
1.检查客户端配置文件中是否定义了绑定
BasicHttpBinding_IDefineMerchants
。另外,如果希望更好地跟踪问题,可以将includeExceptionDetailInFaults
值设置为true
。如果有任何问题,请随时与我联系。