0

我正在构建一个 ASP.NET Core Web API 项目。

服务有时运行,有时失败。

我得到了 90% 的成功结果。

(url) 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。

绑定如下

在此处输入图像描述

4

1 回答 1

0

该服务应该无法正常工作。默认情况下,代理发送的调用优先使用reference.cs文件中生成的服务URI。 我们应该将其更改为实际的服务 URL。
在此处输入图像描述

https://vabqia96vm:21011/

此外,服务与客户端的通信受到传输层安全性的保护。我们应该在发送调用之前信任服务器的证书,或者添加 SSL 身份验证过程以忽略验证服务器的证书。

ServiceReference1.ServiceClient client = new ServiceClient();
//ignore the SSL authentication.            
client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication=new System.ServiceModel.Security.X509ServiceCertificateAuthentication()
            {
                CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None,
                RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck
            };
            var result = client.TestAsync();
            Console.WriteLine(result.Result);

另外,我们可以使用 ChannelFactory 调用服务。

class Program
{
    static void Main(string[] args)
    {
        Uri uri = new Uri("https://vabqia969vm:21011");
        BasicHttpsBinding binding = new BasicHttpsBinding();
        binding.Security.Mode = BasicHttpsSecurityMode.Transport;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        ChannelFactory<IService> factory = new ChannelFactory<IService>(binding, new EndpointAddress(uri));
        factory.Credentials.ServiceCertificate.SslCertificateAuthentication=new System.ServiceModel.Security.X509ServiceCertificateAuthentication()
        {
            CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None,
            RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck
        };
        var client = factory.CreateChannel();
        var result = client.Test();
        Console.WriteLine(result);
    }


}
//the service contract is shared between the server-side and the client-side.
[ServiceContract]
public interface IService
{
    [OperationContract]
    string Test();
}

如果有什么我可以帮忙的,请随时告诉我。

于 2020-03-31T06:32:17.550 回答