编辑: 我应该用什么来捕捉错误?
我有这个,它无法连接错误消息,默认为通用消息。
public string ResponseError {
get {
string retVal = "";
try {
retVal = xmlElements.GetElementValue( FullResponse, "/VancoWS/Response/Errors/Error/ErrorDescription" );
} catch {
retVal = "There has been a problem processing your request. Please try again!";
}
return retVal;
}
}
支付网关称他们对SSL证书进行了更改,从那时起我们的Web应用程序就没有成功连接。代码是用VS.NET 2008 .NET 3.5编写的,我相信C#。从我所知道的,这看起来像是建立连接的代码:
/* Method to perform web post */
private void SendBuffer(string strXml, out string fullResponse, out bool success)
{
String BaseAddress = Url + "?xml=";
try
{
System.Net.WebClient objRequest = new System.Net.WebClient();
objRequest.Encoding = System.Text.Encoding.ASCII;
byte[] buffer = System.Text.Encoding.ASCII.GetBytes(strXml);
byte[] responseBuffer = objRequest.UploadData(BaseAddress, "POST", buffer);
fullResponse = System.Text.Encoding.ASCII.GetString(responseBuffer);
success = true;
}
catch (Exception ex)
{
fullResponse = ex.ToString();
success = false;
}
}
支付网关表示他们没有从我们的服务器到他们的服务器。我联系了webhost,他们说他们没有改变任何阻止连接的东西。
主持人说他们可以在没有无效证书的情况下访问网址。
有问题的网址:https://www.vancoservices.com/cgi-bin/ws2.vps
他们还在运行SSLv3,因此协议更改或强制使用TLS 1.x
不是问题关于什么会破坏这个的任何想法?
答案 0 :(得分:3)
看起来他们已经设置了一个证书,该证书未经有效授权机构签名,或者您的Web服务器没有在其受信任的CA中签署此证书的权限。
要了解证书是否存在问题,您可以尝试连接到正在执行此代码的Web服务器,打开Web浏览器并尝试连接到该地址。浏览器会告诉您证书是否有效(如果不是,您可能会收到警告)。
如果要在代码中禁用证书验证,可以尝试以下操作:
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
显然,这不是您想要使用生产系统进行的操作,但您可以尝试使用它来了解它们设置的SSL证书是否存在问题以及是否自签名。
答案 1 :(得分:1)
"尝试"代码周围的子句隐藏了正在发生的任何错误。您可以尝试的一件事是注释掉try语句,允许代码中断并出现错误:
// try
{
...
}
或添加一个catch子句:
try
{
...
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
答案 2 :(得分:1)
只需在配置中添加以下内容即可更改日志文件路径。如果证书的握手/验证正在发生,这将有意义
http://msdn.microsoft.com/en-us/library/ty48b824(v=vs.110).aspx