- Remove From My Forums
-
Вопрос
-
Добрый день поставил, настроил WSUS, с регулярной периодичностью возникает проблема:
Консоли администрирования WSUS не удается подключиться к серверу WSUS через удаленный API. Проверьте, запущены ли на сервере служба Update Services, IIS и SQL. Если проблему не удается устранить, попробуйте перезапустить IIS, SQL и службу Update Services. Непредусмотренная ошибка консоли администрирования WSUS. Данная ошибка может быть временной, попробуйте перезапустить консоль администрирования. Если ошибку не удается устранить, попробуйте удалить сохраненные параметры, удалив файл с именем "wsus" по адресу %appdata%MicrosoftMMC. System.IO.IOException -- Сбой установки соединения из-за неожиданного формата пакета. Source System Stack Trace: в System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) в System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) в System.Net.ConnectStream.WriteHeaders(Boolean async) ** this exception was nested inside of the following exception ** System.Net.WebException -- Базовое соединение закрыто: Непредвиденная ошибка при передаче. Source Microsoft.UpdateServices.Administration Stack Trace: в Microsoft.UpdateServices.Administration.AdminProxy.CreateUpdateServer(Object[] args) в Microsoft.UpdateServices.UI.AdminApiAccess.AdminApiTools.GetUpdateServer(String serverName, Boolean useSecureConnection, Int32 portNumber) в Microsoft.UpdateServices.UI.SnapIn.Scope.ServerSummaryScopeNode.ConnectToServer() в Microsoft.UpdateServices.UI.SnapIn.Scope.ServerSummaryScopeNode.get_ServerTools()
Нажатие на «сброс серверного узла» не даёт результата, помогает только iisreset.
Несколько раз на разных серверах перенастраивал — ошибка повторяется.
Ответы
-
Удалите файл %AppData%MicrosoftMMCwsus
Мне это в свое время при подобной ошибке помогло.
-
Помечено в качестве ответа
7 апреля 2016 г. 9:52
-
Помечено в качестве ответа
I’m trying to create a method in C# to return a string of a web pages html content from the url. I have tried several different ways, but I am getting the error System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive.
The following works fine locally, but gets the above error when running on a remote server:
public static string WebPageRead(string url)
{
string result = String.Empty;
WebResponse response = null;
StreamReader reader = null;
try
{
if (!String.IsNullOrEmpty(url))
{
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = reader.ReadToEnd();
}
}
catch (Exception exc)
{
throw exc;
}
finally
{
if (reader != null)
{
reader.Close();
}
if (response != null)
{
response.Close();
}
}
return result;
}
asked Apr 15, 2009 at 10:21
1
This is probably not the problem, but try the following:
public static string WebPageRead(string url)
{
if (String.IsNullOrEmpty(url))
{
return null;
}
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
if (request == null)
{
return null;
}
request.Method = "GET";
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader =
new StreamReader(stream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
}
I echo the earlier answer that suggests you try this with a known good URL. I’ll add that you should try this with a known good HTTP 1.1 URL, commenting out the line that sets the version to 1.0. If that works, then it narrows things down considerably.
answered Apr 15, 2009 at 10:59
John SaundersJohn Saunders
160k26 gold badges247 silver badges397 bronze badges
Thanks for the responses, the problem was due to a DNS issue on the remote server! Just to confirm, I went with the following code in the end:
public static string WebPageRead(string url)
{
string content = String.Empty;
if (!String.IsNullOrEmpty(url))
{
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
if (request != null)
{
request.Method = "GET";
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
try
{
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
content = reader.ReadToEnd();
}
}
}
}
catch (Exception exc)
{
throw exc;
}
}
}
return content;
}
answered Apr 15, 2009 at 12:43
2
Had a problem like this before that was solved by opening the url in IE on the machine with the problem. IE then asks you whether you want to add the url to the list of secure sites. Add it and it works for that url.
This is just one of the possible causes. Seriously a lot of other problems could cause this. Besides the problem described above, the best way I’ve found to solve this is the just catch the exception and retry the request.
answered Apr 15, 2009 at 10:46
FungFung
7,5107 gold badges52 silver badges68 bronze badges
Доброго всем времени суток!
Я хочу использовать Client Application Services, для этого решил ознакомиться и попробовать пройти примеры из этой ссылки: http://msdn.microsoft.com/en-us/library/bb546195(v=VS.90).aspx
Поначалу все было хорошо. Но теперь все время выскакивает ошибка — Базовое соединение закрыто: Непредвиденная ошибка при приеме. При вызове метода:
bool isAuthorized = false; try { // Call ValidateUser with empty strings in order to display the // login dialog box configured as a credentials provider. isAuthorized = Membership.ValidateUser( String.Empty, String.Empty); // <--- ЗДЕСЬ ошибка } catch (System.Net.WebException) { if (DialogResult.OK == MessageBox.Show( "Unable to access the authentication service." + Environment.NewLine + "Attempt login in offline mode?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)) { ConnectivityStatus.IsOffline = true; isAuthorized = Membership.ValidateUser( String.Empty, String.Empty); } } if (!isAuthorized) { MessageBox.Show("Unable to authenticate.", "Not logged in", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } return isAuthorized; }
Подскажите что случилось с вэб сервисом?
P.S. Когда вэб-сервис работал, через профайлер sql сервера я видел обращения к базе. Сейчас же никаких обращений нет.
Дополнение: VS 2008 SP1 .NET 3.5 Windows XP
Используется внутренний вэб сервер студии — ASP.NET Development Server
Во время возникновения ошибки с Событиях Windows появляются следующие сообщения:
Код события: 3005
Сообщение о событии: Возникло необработанное исключение.
Время события: 26.10.2010 13:21:55
Время события (UTC): 26.10.2010 9:21:55
Идентификатор события: 249a08db8bee4c059cbb12343a99ff13
Последовательность событий: 2
Появление события: 1
Код подробностей события: 0
Сведения о приложении:
Домен приложения: 7b2c11fe-1-129325585149428287
Уровень доверия: Full
Виртуальный путь к приложению: /ProfitWeb
Путь к приложению: E:WIN_DEVELOPProfitAuthServiceProfitWeb
Имя компьютера: PORAA
Сведения о процессе:
Идентификатор процесса: 3740
Имя процесса: WebDev.WebServer.exe
Имя учетной записи: ID_BLABLAporaa
Сведения об исключении:
Тип исключения: HttpException
Сообщение об исключении: После передачи заголовков HTTP перенаправление невозможно.
Сведения о запросе:
URL запроса: http://localhost:55555/ProfitWeb/Authentication_JSON_AppService.axd/Login
Путь запроса: /ProfitWeb/Authentication_JSON_AppService.axd/Login
Адрес узла пользователя: 127.0.0.1
Пользователь:
Проверка подлинности: False
Тип проверки подлинности:
Имя учетной записи потока: ID_BLABLAporaa
Сведения о потоке:
Идентификатор потока: 4
Имя учетной записи потока: ID_BLABLAporaa
Выполняется олицетворение: False
Трассировка стека: в System.Web.HttpResponse.Redirect(String url, Boolean endResponse)
в System.Web.Security.FormsAuthenticationModule.OnLeave(Object source, EventArgs eventArgs)
в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Подробности пользовательского события:
Дополнительные сведения можно найти в центре справки и поддержки, в «http://go.microsoft.com/fwlink/events.asp».
Доброго времени суток, помогите решить проблему : при попытке сделать запрос на сайт sscasino.online дает ошибку xNet.HttpException" в xNet.dll ("Не удалось установить SSL-соединение с HTTP-сервером 'sscasino.online'.") xNet.HttpException
(xNET)
и
System.Net.WebException" в System.dll ("Базовое соединение закрыто: Непредвиденная ошибка при передаче.") System.Net.WebException
(WebRequest)
request.UserAgent = useragent;
request.IgnoreProtocolErrors = true;
request.SslCertificateValidatorCallback += (sender, certificate, chain, sslPolicyErrors) => true;
var result = request.Get(link);
и
WebRequest req = WebRequest.Create(Url);
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string Out = sr.ReadToEnd();
sr.Close();
При этом, если включить http debbuger pro, то запросы идут нормально. Тестил на
нескольких машинах
задан 22 июн 2017 в 8:45
3
xNet
не будет работать из коробки:
xNet
основан наSslStream
и использует протокол по умолчанию:sslStream.AuthenticateAsClient(address.Host);
xNet GitHub- протокол
SslStream
у должен быть уcтановлен так:
sslStream.AuthenticateAsClient(address.Host, null, SslProtocols.Tls12, true);
MSDN
Два варианта:
- внести вклад в GitHub xNet с изменением выше
- cкомпилировать xNet локально с изменением выше
ТАКЖЕ:
Можно попытаться установить протокол по умолчанию где-нибудь вначале (Global.asax -> Startup если есть):
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
или
ServicePointManager.SecurityProtocol |= (SecurityProtocolType)3072;
Я не пытался проверить, работает ли этот последний вариант
ответ дан 29 июн 2017 в 17:56
user270576user270576
4814 серебряных знака6 бронзовых знаков
1
Для WebRequest
надо было добавить строку ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Для xNet
так и не разобрался
ответ дан 22 июн 2017 в 9:44
LolidzeLolidze
1,3701 золотой знак12 серебряных знаков26 бронзовых знаков
Для того чтобы получить контент страницы можно воспользоваться классом HttpClient
из библиотеки Microsoft HTTP Client Libraries:
private static async Task<string> GetContentFromPageAsync(string page)
{
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls12 |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls;
using (var client = new HttpClient())
using (var response = await client.GetAsync(page))
using (var content = response.Content)
{
var result = await content.ReadAsStringAsync();
return result;
}
}
Использование:
static void Main(string[] args)
{
var content = GetContentFromPageAsync("https://sscasino.online/").Result;
Console.WriteLine(content);
}
// Создаем прокси.
var proxyUri = string.Format("{0}:{1}", proxyServerAddress, proxyServerPort);
var proxyCredential = new NetworkCredential(proxyUserName, proxyUserPassword);
var proxy = new WebProxy(proxyUri, false)
{
UseDefaultCredentials = false,
Credentials = proxyCredential
};
// Создаем ClientHandler.
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
Proxy = proxy,
PreAuthenticate = true,
UseDefaultCredentials = false,
};
var client = new HttpClient(httpClientHandler);
ответ дан 27 июн 2017 в 11:57
sp7sp7
5,2593 золотых знака20 серебряных знаков39 бронзовых знаков
11
Протоколы HTTP через SSL используют правильно выданный сертификат для проверки.
Можно исползовать делегат RemoteCertificateValidationCallback
для проверки SSL-сертификата.
public static void ConnSSL()
{
WebRequest request = WebRequest.Create(Url);
request.Proxy = null;
request.Credentials = CredentialCache.DefaultCredentials;
//Проверяет SSL-сертификаты
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
}
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
Дополнительная информация о RemoteCertificateValidationCallback
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}
ссылка GetWebRequest
ответ дан 27 июн 2017 в 12:23
Vardan VardanyanVardan Vardanyan
1,3071 золотой знак13 серебряных знаков30 бронзовых знаков
3
Сегодня получится краткий обзор об исключении, которое возникает при попытке получить содержимое страницы с использованием метода GetResponse() класса WebRequest. При этом страницы сайтов, получаемые через незащищенное соединение (протокол HTTP), отрабатывают без каких-либо ошибок. А вот, если вы захотите получить страницу через защищенное соединение (протокол HTTPS), то могут возникнуть некоторые трудности.
Внимание! Не для всех страниц с протоколом HTTPS возникает исключительная ситуация. Например, исключение может быть при использовании сайтом бесплатного сертификата Let’s Encrypt, использующего TLS шифрование.
Самые распространенные исключения, которые возникают:
System.Net.WebException: "Базовое соединение закрыто: Непредвиденная ошибка при передаче. "IOException: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение. SocketException: Удаленный хост принудительно разорвал существующее подключение
Ниже приведу пример кода для получения содержимого web-страницы (рабочий вариант):
using System; using System.IO; using System.Net; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string url = "https://www.petrolplus.ru"; // Без этой строки возможно выскакивание исключения! ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; WebRequest request = WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; WebResponse response = request.GetResponse(); Console.WriteLine(((HttpWebResponse)response).StatusDescription); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); Console.WriteLine(responseFromServer); reader.Close(); response.Close(); Console.ReadKey(); } } }
Как видно из примера кода строка ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
гарантирует, что не будет проблем с сертификатом. Здесь мы присваиваем протокол TLS 1.2.
Спасибо всем за внимание.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.