这是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(); 

请参阅http://weblogs.asp.net/jan/archive/2003/12/04/41154.aspx

+0

谢谢Yahia。我将安装证书并测试 – Sathish

+1

CertificatePolicy现在已过时。改用ServerCertificateValidationCallback。没有,仍然没有生产:-) http://msdn.microsoft.com/en-us/library/vstudio/system.net.servicepointmanager.servercertificatevalidationcallback(v=vs.100).aspx – Jaans

看起来像你的服务器提供SSL证书无效(字符串methodName的,对象[]参数) ... checkout this article它应该帮助避免这个问题。

也可以尝试this link

+0

谢谢安纳塔。我会尝试 – Sathish