Webexception базовое соединение закрыто непредвиденная ошибка при

  • 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 Saunders's user avatar

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

Fung's user avatar

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

Lolidze's user avatar

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

user270576's user avatar

user270576user270576

4814 серебряных знака6 бронзовых знаков

1

Для WebRequest надо было добавить строку ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Для xNet так и не разобрался

ответ дан 22 июн 2017 в 9:44

Lolidze's user avatar

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

sp7's user avatar

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 Vardanyan's user avatar

Vardan VardanyanVardan Vardanyan

1,3071 золотой знак13 серебряных знаков30 бронзовых знаков

3

C Sharp

Сегодня получится краткий обзор об исключении, которое возникает при попытке получить содержимое страницы с использованием метода 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.

Понравилась статья? Поделить с друзьями:
  • Webdriver driver new chromedriver ошибка
  • Webdav системная ошибка 1244
  • Webdav ошибка 403
  • Webdav ошибка 0x800700df
  • Webdav ошибка 0x80070043