【发布时间】:2013-11-07 12:33:42
【问题描述】:
使用 C#、.Net 4.5,我正在尝试通过远程服务器上的 HttpWebRequest 发送 Web 请求。请看下面的代码。 我尝试了一些论坛建议的大多数解决方案,但我总是以同样的错误告终。请参阅下面的堆栈跟踪。 调用request.GetReponse()方法时抛出错误。
附加信息,基本上,我正在尝试调用安装在远程服务器上的 vmware 的 vCenter 组件的 reloadSslCertificate 函数。目前,该错误仅发生在 vCenter 5.5 上。它在 5.1 及以下版本中运行良好。
var uri = String.Format("https://{0}/some_url", serverName);
var request = (HttpWebRequest)WebRequest.Create(uri);
request.KeepAlive = true;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
request.Credentials = credential;
request.CookieContainer = cookieContainer;
var response = request.GetResponse();
异常:System.Net.WebException:底层连接是 关闭:发送时发生意外错误。 ---> System.IO.IOException:身份验证失败,因为远程方 已关闭传输流。在 System.Net.Security.SslState.StartReadFrame(字节 [] 缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)在 System.Net.Security.SslState.StartReceiveBlob(字节 [] 缓冲区, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(协议令牌 消息,AsyncProtocolRequest asyncRequest)在 System.Net.Security.SslState.StartSendBlob(字节 [] 传入,Int32 计数,AsyncProtocolRequest asyncRequest)在 System.Net.Security.SslState.ForceAuthentication(布尔接收第一, Byte[] 缓冲区,AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) 在 System.Net.TlsStream.CallProcessAuthentication(Object 州)在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态)在 System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult 结果)在 System.Net.TlsStream.Write(Byte[] 缓冲区,Int32 偏移量,Int32 大小) 在 System.Net.PooledStream.Write(Byte[] 缓冲区,Int32 偏移量,Int32 大小) 在 System.Net.ConnectStream.WriteHeaders(Boolean async) --- 结束 内部异常堆栈跟踪 --- 在 System.Net.HttpWebRequest.GetResponse()
提前致谢。
【问题讨论】:
标签: c# ssl-certificate vmware vcenter system.net.webexception