我是客户端计算机,我正在尝试访问的服务器是一个程序,我将提供支持(我是一个新的第三方程序),然后我需要发送一些数据。< / p>
他们使用HTTPS,但我无法与此联系:
public void StartProcess()
{
BasicHttpsBinding binding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport);
// - They said they don't require credentials
EndpointAddress address = new EndpointAddress("https://www.outsideservice.com/services/C001");
OutsideServiceClient client = new OutsideServiceClient(binding, address);
DataToSend data = new DataToSend();
// - Filling up whatever data I need to send, omitted
try
{
client.StartProcess(data);
}
catch (Exception ex)
{
// ex = Could not establish trust relationship for SSL/TLS secure channel
}
}
他们已经有其他第三方程序访问他们的服务器。 我对证书的工作方式不是很了解(MSDN的基本阅读除外)。
在质疑我如何访问他们的服务器之后,我收到了回复: “已经通过https访问我们的服务器,只需访问计算机,下载证书并在客户端计算机上使用。”
在搜索我如何执行此操作后,我尝试从here访问https://theirURL.com/certsrv
,但我收到Resource Not Found
错误。
从我可以理解的证书如何工作,我必须从他们那里获得证书,双击它,安装在我的机器上(或运行代码连接到他们的机器)是能连接好吗? 或者,为了能够连接,我有什么必须做的事情吗?
答案 0 :(得分:0)
“我必须从他们那里获得证书,双击它,在我的机器上安装(或运行代码的机器连接到它们)才能连接到正确的位置?”
这是正确的做事方式,但是为了让事情顺利进行,你可以使用这段代码:
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
我通常喜欢将此包装在不适用于发布版本的代码中,以便生产实际上必须正确安装证书,如下所示:
#if (!Release)
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
#endif
我相信你应该能够把它放在任何你喜欢的地方,例如Global.asax.cs或者在调用之前。