这是HTTPS服务器上托管的访问web服务
我访问它的SSL认证的web服务器托管的webserivce https://www.example.net/somewebservice/somemethod.asmx这是HTTPS服务器上托管的访问web服务
但是,当我创建一个代理类,并使用C#使用它:我收到此错误
事件类型:错误 事件源:XXXX 事件类别:无 事件ID:0 日期:22/08/2011 时间:14时15分53秒 用户:N/A 计算机:XXXX 描述: System.Net.WebException:底层连接已关闭:无法建立SSL/TLS安全通道的信任关系。 ---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。 在System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,异常的异常) 在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.StartSendBlob (Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest ) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.System.Net.Security.SslState.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) 。 Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest异步请求) at System.Net.SecurityBlocks(Byte [],缓冲区,Int32计数,AsyncProtocolRequest异步请求) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest ) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security。 SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiv eBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count,AsyncProtocolRequest asyncRequest ) at System.Net.Security.SslState.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest) at System .Net.Security。SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte [] incoming,Int32 count, AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.ForceAuthentication(布尔receiveFirst,字节[]缓冲液,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 在System.Net.TlsStream.CallProcessAuthentication (对象状态) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code,CleanupCode backoutCode,Object us在System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback回调,对象状态) 在System.Net.TlsStream.ProcessAuthentication() LazyAsyncResult result) at System.Net.TlsStream.Write(Byte [] buffer,Int32 offset,Int32 size) at System.Net.PooledStream.Write(Byte [] buffer,Int32 offset,Int32 size) at System.Net .ConnectStream.WriteHeaders(布尔异步) ---内部异常堆栈跟踪--- 在System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest请求) 在System.Web.Services.Protocols.HttpWebClientProtocol的末尾。 GetWebRes ponse(WebRequest的要求) 在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke在
看来你的SSL证书是自签名的或不被信任的,因为这
System.Net.WebException一个CA:基础连接已关闭: 可能不建立SSL/TLS安全通道的信任关系。
使我相信......最简单的办法:安装一个受信任的证书 ...
绝对不生产
其他的解决办法是修改客户端验证
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
public TrustAllCertificatePolicy()
{}
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert,WebRequest req, int problem)
{
return true;
}
}
// this needs to be done once before the first webservice call
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
看起来像你的服务器提供SSL证书无效(字符串methodName的,对象[]参数) ... checkout this article它应该帮助避免这个问题。
也可以尝试this link
谢谢安纳塔。我会尝试 – Sathish
谢谢Yahia。我将安装证书并测试 – Sathish
CertificatePolicy现在已过时。改用ServerCertificateValidationCallback。没有,仍然没有生产:-) http://msdn.microsoft.com/en-us/library/vstudio/system.net.servicepointmanager.servercertificatevalidationcallback(v=vs.100).aspx – Jaans